Python 如何获取DataFrame中条件值的行计数?
我有这个数据框Python 如何获取DataFrame中条件值的行计数?,python,pandas,dataframe,Python,Pandas,Dataframe,我有这个数据框 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 .
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
使用:
说明:
首先通过0
将所有值与(
)进行比较:
然后对每行的值求和True
s(像1
一样处理):
print (df.gt(0).sum(axis=1))
aa 2
bb 1
cc 4
dd 2
zz 2
dtype: int64
然后按以下方式排序:
您能从问题的样本数据中添加预期的输出吗?该值不仅是0和1,正如我在上面解释的,我想对所有值大于1的列进行计数/求和。而且aa bb cc dd已经作为索引。所以你的答案不是01 2 3 4mentioned@FH337-当然,第二个解决方案被删除了。我试图简化它,这段代码将完成所有工作:df1=df.gt(0).sum(axis=1).sort_values(升序=False)@FH337-Super。还添加了对答案的解释。
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
print (df.gt(0).sum(axis=1))
aa 2
bb 1
cc 4
dd 2
zz 2
dtype: int64
print (df.gt(0).sum(axis=1).sort_values(ascending=False))
cc 4
zz 2
dd 2
aa 2
bb 1
dtype: int64