我正在使用pandas中的数据框架。我的数据框架有55列和70000行。
如何选择两个或多个值大于0的行?
现在看起来像这样:
A B C D E
a 0 2 0 8 0
b 3 0 0 0 0
c 6 2 5 0 0
我想这样写:
A B C D E F
a 0 2 0 8 0 true
b 3 0 0 0 0 false
c 6 2 5 0 0 true
我试过把它转换成0和1,然后求和,像这样:
df[df > 0] = 1
df[(df > 0).sum(axis=1) >= 2]
但是我失去了数据框中的所有其他信息,我仍然希望能够看到原始值。
尝试这样分配一个列:
>>> df['F'] = df.gt(0).sum(axis=1).ge(2)
>>> df
A B C D E F
a 0 2 0 8 0 True
b 3 0 0 0 0 False
c 6 2 5 0 0 True
或者试试astype(bool)
:
>>> df['F'] = df.astype(bool).sum(axis=1).ge(2)
>>> df
A B C D E F
a 0 2 0 8 0 True
b 3 0 0 0 0 False
c 6 2 5 0 0 True
>>>
您已经接近了,只需为新列分配掩码:
df['F'] = (df > 0).sum(axis=1) >= 2
或:
df['F'] = np.count_nonzero(df, axis=1) >= 2
print (df)
A B C D E F
a 0 2 0 8 0 True
b 3 0 0 0 0 False
c 6 2 5 0 0 True