Excel电子表格如下所示。
使用Pandas,我想删除“Project C”和“Project E”列以及“Project A”和“Project D”列中值为“XX”的所有行。
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
如何删除这些行?谢谢。
答案 0 :(得分:1)
如果你的列名没有空格,你可以按照以下方式做一些事情:
results1 = results1.query("ColumnName != 'XX'")
或者替代地:
results1.query("ColumnName != 'XX'", inplace=True)
唉,他们这样做了。现在你可以重命名这些列,因为空白是邪恶的化身,或者执行:
results1 = results1[results1['Project A'] != 'XX']
基本上:为索引创建一个掩码并对数据帧进行切片。
在没有空格的情况下重命名列也可以在oneliner中完成:
results1.columns = [''.join(x.strip().split()) for x in results1.columns]
然后你可以继续这样的事情:
column_list = ['ProjectA', 'ProjectD']
for col in column_list:
results1.query(col+"!='XX'", inplace=True)