9

我有一个 Pandas 数据框,我想在其中过滤掉所有仅包含零的列。例如,在下面的数据框中,我想删除第 2 列:

        0      1      2      3      4
0   0.381  0.794  0.000  0.964  0.304
1   0.538  0.029  0.000  0.327  0.928
2   0.041  0.312  0.000  0.208  0.284
3   0.406  0.786  0.000  0.334  0.118
4   0.511  0.166  0.000  0.181  0.980

我怎样才能做到这一点?我一直在尝试这样的事情:

df.filter(lambda x: x == 0)
4

1 回答 1

10

以下对我有用。它给出了一个序列,其中列名现在是索引,并且索引的值是 True/False,具体取决于列中的所有项目是否为 0。

import pandas, numpy as np
# Create DataFrame "df" like yours...

df.apply(lambda x: np.all(x == 0))

如果你想实际过滤掉 0 值:

df[df.columns[(df != 0).any()]]
于 2012-09-13T17:32:12.353 回答