列大于阈值

时间:2018-11-23 15:16:08

标签: python pandas threshold

如何检索至少一次出现值<阈值的列?

例如:

THRESHOLD = 0

print(df)

Col_1  Col_2  Col_3   Col_4
   1     3      5      -9
   1     3      5      -9
   1    -2      5      -9

print(final_df)

  Col_2    Col_4
     3      -9
     3      -9
    -2      -9

我尝试过:

df[(df < 0).any(1)]  

但是它报告的行而不是列,其中至少出现一个元素<0。

2 个答案:

答案 0 :(得分:1)

axis=0.loc一起使用

df.loc[:,(df < 0).any(0)]
Out[215]: 
   Col_2  Col_4
0      3     -9
1      3     -9
2     -2     -9

或者我们将.ilocnonzero一起使用

df.iloc[:,(df<0).any().nonzero()[0]]
Out[230]: 
   Col_2  Col_4
0      3     -9
1      3     -9
2     -2     -9

答案 1 :(得分:1)

您可以发出WebSocketCreator

df.loc[:, (df < 0).any(0)]

详细信息:

>>> df Col_1 Col_2 Col_3 Col_4 0 1 3 5 -9 1 1 3 5 -9 2 1 -2 5 -9 >>> >>> df.loc[:, (df < 0).any(0)] Col_2 Col_4 0 3 -9 1 3 -9 2 -2 -9 将为您提供值小于零的列,因为(df < 0).any(0)沿行 进行操作。

any(0)

然后>>> df < 0 Col_1 Col_2 Col_3 Col_4 0 False False False True 1 False False False True 2 False True False True >>> >>> (df < 0).any(0) Col_1 False Col_2 True Col_3 False Col_4 True dtype: bool 通过布尔索引选择df.loc[:, (df < 0).any(0)]df < 0).any(0)的所有行和列。