gpt4 book ai didi

python - 使用 Pandas 从 Excel 转换为 CSV,我有多个可能的 Excel 工作表名称

转载 作者:太空宇宙 更新时间:2023-11-03 20:39:18 24 4
gpt4 key购买 nike

我正在尝试使用 Python 将大量 Excel 文档转换为 CSV,并且我从每个文档转换的工作表可以称为“Pivot”、“PVT”、“pivot”或“pvt”。我现在做的一些方法似乎有效,但我想知道是否有更快的方法,因为这需要很长时间才能浏览我的 Excel 文件。有没有一种方法可以使用 OR 运算符指定工作表名称的多个变体,在一个 pd.read_excel 行中完成相同的操作?

for f in glob.glob("../Test/Drawsheet*.xlsx"):
try:
data_xlsx = pd.read_excel(f, 'PVT', index_col=None)
except:
try:
data_xlsx = pd.read_excel(f, 'pvt', index_col=None)
except:
try:
data_xlsx = pd.read_excel(f, 'pivot', index_col=None)
except:
try:
data_xlsx = pd.read_excel(f, 'Pivot', index_col=None)
except:
continue
data_xlsx.to_csv('csvfile' + str(counter) + '.csv', encoding='utf-8')
counter += 1

最佳答案

您的问题不在于为 pd.read_excel 找到正确的特殊语法,而是知道从哪张表中读取。 Pandas 有一个 ExcelFile,它封装了 Excel 文件的一些基本信息。该类有一个 sheet_names 属性,可以告诉您文件中有哪些工作表。 (不幸的是,这个类的文档有点难找到,所以我不能给你一个链接)

valid_sheet_names = ['PVT', 'pvt', 'pivot', 'Pivot']

for f in glob.iglob('../Test/Drawsheet*.xlsx'):
file = pd.ExcelFile(f)
sheet_name = None

for name in file.sheet_names:
if name in valid_sheet_names:
sheet_name = name
break

if sheet_name is None:
continue

data_xlsx = pd.read_excel(f, sheet_name, index_col=None)
...

但是,这并不严格等同于您的代码,因为它不执行以下两件事:

  • 级联read_excel(如果所选工作表无法加载到数据框中)
  • 对工作表名称进行优先级排序(例如首先是 PVT,然后是 pvt,然后是 pivot,等等)

我将告诉您如何根据您的程序需要处理这两个问题。

关于python - 使用 Pandas 从 Excel 转换为 CSV,我有多个可能的 Excel 工作表名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56958200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com