我试图收集多个csv文件到一个excel工作簿,并保持csv文件的名称在每个工作表,但循环无法保存工作表的每一步,我只得到最后一张工作表?
for i in range(0,len(dir)):
for filee in os.listdir(dir):
if filee.endswith(".csv"):
file_path = os.path.join(dir, filee)
df = pd.read_csv(file_path, on_bad_lines='skip')
df.to_excel("output.xlsx",sheet_name=filee, index=False)
i=i+1
我试过ExcelWriter,但文件出错,有人能帮助解决这个问题吗
3条答案
按热度按时间kmbjn2e31#
由于第一个for循环没有正确定义,所以这段代码会产生一个
SyntaxError
,但是,假设它是一个IndentationError
,并移动到for循环体。在每个
.csv
文件中,for循环将其读入pandas.DataFrame
并将其写入output.xlsx
,基本上,每次迭代都覆盖该文件,因此,您只能看到最后一张表。请!看看这个链接:Add worksheet to existing Excel file with pandas
cygmwpex2#
通常,问题是工作表名的类型,例如在
df.to_excel("Output.xlsx",sheet_name = '1')
中,如果我不在引号中加上1,我会得到一个错误,它必须总是str类型例如,我在Google协作文件中有以下csv文件:
使用下面的代码,我首先将它们全部放在
df
中,然后将它们传输到Excel文件(在单独的工作表中)。它对我来说工作正常,我没有得到任何错误。
hc2pp10m3#
你可以使用dict comp来存储所有的dfs和文件名,然后把它传递给一个函数,用list comp来解压缩dict并写入工作表。