2017-08-24 149 views
0

問候讓我有一個熊貓數據幀,看起來像這樣:刪除了一些列的熊貓數據幀在一行

Product_Code W0 W1 W2 W3 W4 W5 W6 W7 W8  ...  \ 
806   P815 0 0 1 0 0 2 1 0 0  ...   
807   P816 0 1 0 0 1 2 2 6 0  ...   
808   P817 1 0 0 0 1 1 2 1 1  ...   
809   P818 0 0 0 1 0 0 0 0 1  ...   
810   P819 0 1 0 0 0 0 0 0 0  ...   

    Normalized 42 Normalized 43 Normalized 44 Normalized 45 \ 
806   0.00   0.33   0.33   0.00 
807   0.43   0.43   0.57   0.29 
808   0.50   0.00   0.00   0.50 
809   0.00   0.00   0.00   0.50 
810   0.00   0.00   0.00   0.00 

,但我不需要這些列,其實我只需要W0和W4,所以我想將它們全部刪除,所以這是我的嘗試:半小時後

raw_data = [ raw_data.drop([i], 1, inplace = True) for i in raw_data if i is not 'W0' and i is not 'W4' ] 

我想通了,由於某種原因!=不起作用串and I was wondering why?所以我有一個穩定的解決方案:

#WORKS !!!! 
# for i in raw_data: 
#  if i != 'W0' and i != 'W4': 
#   raw_data.drop([i], 1, inplace = True) 

但我不喜歡它,我已經評論它,因爲它需要很大的空間,它不是很漂亮,我想做單線循環,如果表達工作,是可能的,問題是:

raw_data = [ raw_data.drop([i], 1, inplace = True) for i in raw_data if i != 'W0' and i != 'W4' ] 

試圖將DataFrame轉換爲列表,它應該如何完成?

回答

2

您可以使用:

raw_data.drop([i for i in raw_data if i is not 'W0' and i is not 'W4'], 
       axis=1, inplace=True) 

這個答案,但是你陳述沒有意義的條件。你提出的條件是if i is not 'W0' and i is not 'W4',這將永遠是真實的。您可能需要再次查看該情況。

+0

是的,我認爲'='等同於'是not' – Hartun

+0

烏姆它。你可能正在尋找或運算符而不是和 –

+0

不是它不是不工作,我正在尋找,因爲如果我是W0 =>我不是W0(假),我不是W4( True)=>'表達式是'False'=>我們不會丟棄該列 – Hartun

0

這應該工作:

raw_data = pd.DataFrame(raw_data, index=your_index, columns=['W0', 'W4'])