首页 > 解决方案 > 如何使用 pandas 删除工作簿中多个工作表上的行和列?

问题描述

我有一个文件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 列,因为它完全是空的。我需要为每个选项卡执行此操作。excel文档

标签: pythonpython-3.xexcelpandas

解决方案


这段代码应该这样做:

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_excel设置sheet_nameNone会将工作簿的每一页读入字典(称为 df)。


推荐阅读