【问题标题】:How to use pandas to delete rows and columns on multiple sheets in a workbook?如何使用 pandas 删除工作簿中多个工作表上的行和列?
【发布时间】:2020-09-23 14:24:52
【问题描述】:

我有一个文件input_file_new.xsl,我需要删除所有完全为空的行和列。我想出了这个功能:

def DeleteEmptyColumns(filename):
    import pandas as pd
    new_loc = `input_file_new.xsl`
    df = pd.read_excel(new_loc, 'Person')

    df.drop('Application_ID', 1,inplace=True)
    writer = pd.ExcelWriter('output.xlsx')

    df.to_excel(writer,'Sheet1')
    writer.save()

确实会正确删除列,但仅在第一张工作表上,然后将该工作表保存为全新的工作表。删除所有空列后,我需要将每张纸保留在同一个文档上。有没有更简单的方法?我研究了 Win32 COM,但我希望能够为此使用 Pandas。

编辑:这是 excel 的屏幕截图。因此,您可以在“人员”选项卡上看到我需要删除 A 列,因为它完全是空的。我需要为每个标签执行此操作。

【问题讨论】:

  • 对我来说还不清楚问题是什么。您希望从所有工作表中删除列吗?
  • 我需要从每个工作表中删除所有空行和列
  • 好的,然后将其存储在新文件中或覆盖原始文件中的每个工作表?
  • 任何一个都可以
  • 空的意思是只包含Nans?

标签: python python-3.x excel pandas


【解决方案1】:

这段代码应该可以做到:

df = pd.read_excel("input_file_new.xlsx", header=None, sheet_name=None)

writer = pd.ExcelWriter('output_file.xlsx', engine='openpyxl') 
for key in df:
    sheet= df[key].dropna(how="all").dropna(1,how="all")
    sheet.to_excel(writer, key,index=False, header=False )
    
writer.save()

for 循环用于遍历工作簿中的每个工作表。然后删除仅包含“Nan”单元格的列和行,并将生成的表存储在一个称为原始表的工作表中,但在一个新文件中。

read_excelsheet_name 设置为None 会将工作簿的每一页读入字典(称为df)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多