从pandas dataframe中选择并忽略零值的列

时间:2015-05-18 19:05:06

标签: pandas boolean slice

我正在使用datetimeindex从数据框中选择行。选择时,我想自动排除那些只有零值的列。

我提出了进行测试的列表理解。

test = [data[i].isin([1]).any(0) for i in data.columns]

我现在如何在数据帧的一部分上应用此测试?

data[test]

给了我一个ValueError:Item错误的长度。

谢谢!

1 个答案:

答案 0 :(得分:1)

最快的方法IMO只是过滤整个df,然后删除生成的NaN值(使用dropna在列轴上设置至少1个非NaN的阈值值:

In [29]:

df = pd.DataFrame({'a':[1,2,3],'b':0, 'c':[0,0,1]})
df
Out[29]:
   a  b  c
0  1  0  0
1  2  0  0
2  3  0  1
In [37]:

df[df!=0].dropna(axis=1, thresh=1)
Out[37]:
   a   c
0  1 NaN
1  2 NaN
2  3   1

然后,您可以根据需要使用已过滤的df的结果,而无需担心无效的列值