将多个Excel文件导入Python,合并并将文件名应用于新列

时间:2019-03-14 13:40:15

标签: python excel pandas dataframe import

我有一个for循环,可将目录中的所有Excel文件导入并将其合并到单个数据框中。但是,我想创建一个新列,其中每一行都使用Excel文件的文件名字符串。

这是我的导入和合并代码:

path = os.getcwd()
files = os.listdir(path)

df = pd.DataFrame()
for f in files:
    data = pd.read_excel(f, 'Sheet1', header = None, names = ['col1','col2'])
    df = df.append(data)

例如,如果第一个Excel文件名为“ file1.xlsx”,则我希望该文件中的所有行在file1.xlsx(新列)中都具有值col3。如果第二个Excel文件名为“ file2.xlsx”,我希望该文件中的所有行都具有值file2.xlsx。请注意,Excel文件没有真正的模式,我仅以这些名称为例。

非常感谢

1 个答案:

答案 0 :(得分:1)

循环创建新列:

df = pd.DataFrame()
for f in files:
    data = pd.read_excel(f, 'Sheet1', header = None, names = ['col1','col2'])
    data['col3'] = f
    df = df.append(data)

列表理解的另一种可能的解决方案:

dfs = [pd.read_excel(f, 'Sheet1', header = None, names = ['col1','col2']).assign(col3 = f)
        for f in files]

 df = pd.concat(dfs)