我有一个包含多列的 pandas 数据框。整个单级索引。
我希望删除列中所有值 ==0 的列
我可以通过循环每一列、测试并创建一个布尔数组来做到这一点。然后我转置、切片并转回
但
我必须想有更好的方法。
只需使用布尔条件来创建掩码,然后调用any并传递axis=0参数来删除所有列NaN,该any调用将创建一个布尔系列,您可以使用它来选择所有值都不是的列NaN:
In [18]:
df = pd.DataFrame({'a':np.random.randn(5), 'b':0,'c':np.random.randn(5),'d':0, 'e':np.arange(5)})
df
Out[18]:
a b c d e
0 -0.546906 0 0.235070 0 0
1 0.260935 0 0.650391 0 1
2 0.419727 0 -1.002794 0 2
3 -0.283556 0 0.668378 0 3
4 0.924392 0 -1.297040 0 4
In [28]:
df[df.columns[(df!=0).any(axis=0)]]
Out[28]:
a c e
0 -0.546906 0.235070 0
1 0.260935 0.650391 1
2 0.419727 -1.002794 2
3 -0.283556 0.668378 3
4 0.924392 -1.297040 4
In [27]:
(df!=0).any(axis=0)
Out[27]:
a True
b False
c True
d False
e True
dtype: bool
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
800 次 |
| 最近记录: |