选择在pandas中有两个或多个列大于0的行



我正在使用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

最新更新