2015-05-18 25 views
0

我正在使用datetimeindex從數據框中選擇行。選擇時,我想自動排除那些只有零值的列。從pandas數據框中選擇並忽略具有零值的列

我想出了一個測試列表理解。

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

我該如何將這個測試應用於數據幀的切片?

data[test] 

給了我一個ValueError:項目錯誤的長度。

謝謝!

回答

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的結果,但是您希望,而不必擔心無效的列值

+0

好的,所以我明白了,謝謝! – DigitalMusicology

+0

如果我的答案回答了您的問題,請接受它,以便帖子不會未答覆,也考慮upvoting – EdChum

+0

嗨@EdChum!謝謝 您的幫助。我贊成你的回答,因爲它幫助我完成了工作。非常感謝!我不確定它是否真的是我的問題的答案,但(如何將測試應用於數據框)。也許別人可以回答這個問題? – DigitalMusicology

相關問題