如何检索至少一次出现值<阈值的列?
例如:
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。
答案 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
或者我们将.iloc
与nonzero
一起使用
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)
的所有行和列。