python - 如何使用 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 列,因为它完全是空的。我需要为每个选项卡执行此操作。
解决方案
这段代码应该这样做:
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_name
为None
会将工作簿的每一页读入字典(称为 df)。
推荐阅读
- r - 如何从嵌套的 JSON 格式 API 内容创建简单的数据框
- encryption - 使用 .pem openssl 解密 .enc
- ios - 升级到 ios 13 时 xcodebuild 存档失败
- ios - 无法将结构变量设为可变类型
- javascript - 无法让数据在网页上正确显示
- javascript - JavaScript 对象未实例化
- c# - 使用 Assert.Contains 在 xUnit 中进行测试
- mysql - 在mysql中将时间转换为“h:mm:a”
- python - 使用 Python 标准库从正确的名称(字符串)中获取星期几代码(int)
- python - 如何创建 3 个列表的所有可能组合的列表?