gpt4 book ai didi

python - 如何获取 DataFrame 中条件值的行数?

转载 作者:行者123 更新时间:2023-12-01 07:22:41 24 4
gpt4 key购买 nike

我有这个数据框

     0   1   2   3   4   5   6   7   8 .... 1000

aa | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 7 |...| 1

bb | 0 | 1 | 0 | 0 | 0 | 0 | 3 | 0 | 0 |...| 0

cc | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |...| 1

dd | 0 | 0 | 5 | 0 | 0 | 1 | 0 | 1 | 0 |...| 0
.
.
.

zz | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 |...| 0

我尝试过使用:

DFcount = DF1.apply(lambda x: True if x.any() > 0 else  False,axis=1)
numOfRows = len(DFcount[DFcount == True].index)

我也尝试过使用:

DFcount = DF1.apply(lambda x: True if x.all() > 0 else  False,axis=1)
numOfRows = len(DFcount[DFcount == True].index)

但是输出不是我所期望的

输出应该是所有行中值> 0所有列的总和

aa 100

bb 23

cc 56

dd 12
.
.
.

zz 5

降序排序如下:

aa 100

mm 98

cc 56

bb 23

dd 12
.
.
.

zz 5

最佳答案

用途:

df1 = df.gt(0).sum(axis=1).sort_values(ascending=False).rename_axis('a').reset_index(name='b')

print (df1)
a b
0 cc 4
1 zz 2
2 dd 2
3 aa 2
4 bb 1

说明:

首先将所有值与 DataFrame.gt 进行 0 比较(>):

print (df.gt(0))
0 1 2 3 4 5 6 7 8 1000
aa False False False False False True False False False True
bb False True False False False False False False False False
cc False True True False False True False False False True
dd False False False False False True False True False False
zz False False True False False True False False False False

然后对每行的 True 值求和(像 1 一样处理):

print (df.gt(0).sum(axis=1))
aa 2
bb 1
cc 4
dd 2
zz 2
dtype: int64

然后按 Series.sort_values 排序:

print (df.gt(0).sum(axis=1).sort_values(ascending=False))
cc 4
zz 2
dd 2
aa 2
bb 1
dtype: int64

关于python - 如何获取 DataFrame 中条件值的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57620795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com