我正在使用datetimeindex从数据框中选择行。选择时,我想自动排除那些只有零值的列。
我提出了进行测试的列表理解。
test = [data[i].isin([1]).any(0) for i in data.columns]
我现在如何在数据帧的一部分上应用此测试?
data[test]
给了我一个ValueError:Item错误的长度。
谢谢!
答案 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的结果,而无需担心无效的列值