Python:如果包含所有负值,如何删除列?

时间:2021-06-22 09:00:40

标签: python pandas

我有一个如下所示的数据框

df
     A   B   C   D   E
0   -1  -3   0   5  -2
1    3  -2  -1  -4  -5
2    0  -4  -3  -2  -1

我想删除包含所有负值的列并将它们保存在第二个数据框中。这样我想有

df
     A   C   D   
0   -1   0   5  
1    3  -1  -4  
2    0  -3  -2  

df2 
     B   E
0   -3  -2
1   -2  -5
2   -4  -1

1 个答案:

答案 0 :(得分:4)

使用 DataFrame.lt 代替 0DataFrame.all 测试所有 True,然后过滤 DataFrame.loc,这里 : 表示得到掩码的所有行和列:

m = df.lt(0).all()

df1 = df.loc[:, ~m]
df2 = df.loc[:, m]

或者用大于或等于的值反转测试至少一个 True 的逻辑:

m = df.ge(0).any()

df1 = df.loc[:, m]
df2 = df.loc[:, ~m]