read_excel到数据框并将文件名保存为列(Pandas)

时间:2018-06-03 16:03:15

标签: python pandas

我正在尝试将多个excel文件读入数据框,但我似乎无法找到一种方法将文件名作为一个列来引用它来自哪里。此外,我需要过滤excel文件的名称和我执行read_excel之前创建的日期。 (有很多文件,如果我不需要,我不想读它们)这就是我所拥有的:

res = []
for root, dirs, files in os.walk('.../Minutes/', topdown=True):
    if len(files) > 0:
        res.extend(zip([root]*len(files), files))

df = pd.DataFrame(res, columns=['Path', 'File_Name'])

df['FullDir'] = df.Path+'\\'+df.File_Name

list_ = []
for f in df["FullDir"]:
    data = pd.read_excel(f, sheet_name = 1)
    list_.append(data)
    df2 = pd.concat(list_)

df2

我想要的是输出

   A  B  filename  File Date Created
0  a  a  File1     1-1-2018
1  b  b  File1     1-1-2018
2  c  c  FIle2     2-1-2018
3  a  a  File2     2-1-2018

非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:1)

您可以将concatkeys一起使用,然后reset_index

res = []
for root, dirs, files in os.walk('.../Minutes/', topdown=True):
    if len(files) > 0:
        res.extend(zip([root]*len(files), files))

df = pd.DataFrame(res, columns=['Path', 'File_Name'])

df['FullDir'] = df.Path+'\\'+df.File_Name

假设上面的代码按预期工作

list_ = []
for f in df["FullDir"]:
    data = pd.read_excel(f, sheet_name = 1)
    list_.append(data)

df2 = pd.concat(list_, keys=df.File_Name.values.tolist()).reset_index(level=0)