我有一个如下所示的数据框
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
答案 0 :(得分:4)
使用 DataFrame.lt
代替 0
和 DataFrame.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]