用于删除特定行的电子表格。
在保存到新电子表格之前,第一列的所有行都包含以“36”开头的值。
我使用这些代码(之后需要在Excel中拆分列)。示例如下所示:
import xlwt
from xlrd import open_workbook
old_file = open_workbook('C:\\original.xlsx')
old_sheet = old_file.sheet_by_index(0)
new_file = xlwt.Workbook(encoding='utf-8', style_compression = 0)
new_sheet = new_file.add_sheet('Sheet1', cell_overwrite_ok = True)
contents = []
for row in range(old_sheet.nrows):
a = str(old_sheet.cell(row,0).value)
b = str(old_sheet.cell(row,1).value)
if not a.startswith("36"):
contents.append(a + "," + b)
for c, content in enumerate(contents):
new_sheet.write(c, 0, content)
new_file.save('C:\\result.xls')
这还不够,所以我想学习熊猫的方式。
我尝试过像df.drop([“3649”]这样的东西但它不起作用。
正确的Pandas删除行的方法是什么?谢谢。
答案 0 :(得分:1)
我认为您需要先read_excel
,然后按boolean indexing
进行过滤,~
使用startswith
或contains
^
进行过滤。正则字符串开头的字符串):
df = pd.read_excel('C:\\original.xlsx')
df = df[~df['Model'].astype(str).str.startswith('36')]
替代:
df = df[~df['Model'].astype(str).str.contains('^36')]
print (df)
Model Country
0 1021 France
1 9644 India
2 9656 India
4 9687 China
6 9630 Spain
7 9666 Brasil
和上一次to_excel
:
df.to_excel('C:\\result.xls', index=False)