2017-09-22 2282 views
1

Excel電子表格如下所示。Python,Pandas刪除指定列中具有特定值的行

enter image description here

隨着熊貓,我想在列刪除列「項目C」和「項目E」,和所有行與值「XX」,「A計劃」和「項目d」。

import pandas as pd 
import numpy as np 

work_file = "C:\\test.xlsx" 

df = pd.read_excel(work_file, sheetname = "Sheet1", index_col = 0) 

column_list_to_remove = [「Project C", 「Project E"] 

results1 = df.drop(column_list_to_remove, axis=1) 

writer = pd.ExcelWriter("C:\\test new.xlsx") 

pd.formats.format.header_style = None 

results1.to_excel(writer,'Sheet1') 

writer.save() 

上面的工作很好地去除了列。

我嘗試在此行上添加刪除「項目A」中值爲「XX」的行,但失敗。沒有希望刪除「D項目」中的那些。

results1 = results1[results1."Project A" != "XX"] 
# SyntaxError: invalid syntax 

如何刪除這些行?謝謝。

回答

1

如果列名沒有空格,你可以做的東西沿着線:

results1 = results1.query("ColumnName != 'XX'") 

或可替代就地:

results1.query("ColumnName != 'XX'", inplace=True) 

唉,他們這樣做。基本上

results1 = results1[results1['Project A'] != 'XX'] 

:現在,您可以重命名這些列,空白是邪惡的化身,還是創建索引口罩和切片數據幀。

重命名您的列沒有空格可以在oneliner完成,以及:

column_list = ['ProjectA', 'ProjectD'] 
for col in column_list: 
    results1.query(col+"!='XX'", inplace=True) 
+0

謝謝:

results1.columns = [''.join(x.strip().split()) for x in results1.columns] 

然後你就可以用類似進行。所以如果我不想重新命名列,我只需要像results1 = results1 [results1 ['Project D']!='XX']重複。 –

+1

是的;當然你也可以把它放在循環或者理解中,如果你有很多這樣的列,並且你不想一遍又一遍地粘貼同一行。 – Uvar

+0

感謝您分享專業知識。 :) –

相關問題