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



我有一个数据帧,看起来像下面的

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

0DataFrame.all这样的较小值使用DataFrame.lt来测试所有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]

最新更新