我知道这类问题总是被问到。但我想不出最好的办法。
我编写了一个脚本,使用pandas重新格式化单个excel文件。 效果很好。
现在,我想循环浏览多个excel文件,执行相同的重新格式化,并将每个excel工作表中重新格式化的数据逐个放在底部。
我相信第一步是列出目录中所有excel文件的列表。 有太多不同的方法可以做到这一点,所以我很难找到最好的方法。
下面是我当前用于导入多个.xlsx并创建列表的代码。
import os
import glob
os.chdir('C:\ExcelWorkbooksFolder')
for FileList in glob.glob('*.xlsx'):
print(FileList)
我不确定之前的glob代码是否真的创建了我需要的列表。
那我就不知道从那里去哪里了。
下面的代码在pd.ExcelFile(File)
失败
我觉得我错过了什么。。。。
# create for loop
for File in FileList:
for x in File:
# Import the excel file and call it xlsx_file
xlsx_file = pd.ExcelFile(File)
xlsx_file
# View the excel files sheet names
xlsx_file.sheet_names
# Load the xlsx files Data sheet as a dataframe
df = xlsx_file.parse('Data',header= None)
# select important rows,
df_NoHeader = df[4:]
#then It does some more reformatting.
'
非常感谢您的帮助
我解决了我的问题。我没有使用glob函数,而是使用os.listdir读取所有excel工作表,遍历每个excel文件,重新格式化,然后将最终数据追加到表的末尾。
就这样,它做了我想要的一切。
你需要改变
只是
为什么会这样?
glob
返回单个列表。既然你放了for FileList in glob.glob(...)
,你就要一个一个地遍历这个列表,并将结果放入FileList
。在循环的末尾,FileList
是一个文件名-一个字符串。执行此代码时:
第一行将把
File
赋给最后一个文件名的第一个字符(作为字符串)。第二行将把x
赋给File
的第一个(也是唯一的)字符。这不太可能是有效的文件名,因此会引发错误。相关问题 更多 >
编程相关推荐