Python、Pandas将Excel文件合并为1,文件名为A列

Mar*_*k K 2 python excel dataframe pandas

我正在将 Excel 电子表格合并为 1 个电子表格,并希望在合并时将电子表格的文件名作为第一列插入。

\n\n

要合并的Excel文件为:20170801.xlsx、20170901.xlsx、20171001.xlsx

\n\n

这是我的代码:

\n\n
working_folder = \'c:\\\\abc\\\\\'\nfiles = os.listdir(working_folder)\n\nfiles_xls = [];\nfor f in files:\n    if f.endswith(".xlsx"):\n        fff = working_folder + f\n        files_xls.append(fff)\n\ndf = pd.DataFrame();\n\nfor f in files_xls:\n    data = pd.read_excel(f, skip_footer=0)\n    file_date = basename(f).replace(".xlsx", "")\n    #data.index = pd.MultiIndex.from_tuples([("", file_date)] * len(data))\n    data.index = pd.MultiIndex.from_tuples([(file_date)] * len(data))\n    df = df.append(data)\n\ndf.to_excel(working_folder + \'final.xls\', merge_cells = False)\n
Run Code Online (Sandbox Code Playgroud)\n\n

问题出在data.index = pd.MultiIndex \xe2\x80\xa6 行。

\n\n

当我使用时:

\n\n
data.index = pd.MultiIndex.from_tuples([(file_date)] * len(data))\n
Run Code Online (Sandbox Code Playgroud)\n\n

它会生成这样的电子表格:

\n\n

在此输入图像描述

\n\n

当我使用时:

\n\n

data.index = pd.MultiIndex.from_tuples([("", file_date)] * len(data))

\n\n

它会生成一个外观更好的电子表格,但 A 列为空,如下所示:\n在此输入图像描述

\n\n

不使用 MultiIndex,我怎样才能得到像这样的最终电子表格?

\n\n

在此输入图像描述

\n\n

谢谢。

\n

jez*_*ael 5

我相信你不需要MultiIndex,只需改变:

data.index = pd.MultiIndex.from_tuples([(file_date)] * len(data))
Run Code Online (Sandbox Code Playgroud)

到:

data.index = [file_date] * len(data)
Run Code Online (Sandbox Code Playgroud)