我有一个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文件没有真正的模式,我仅以这些名称为例。
非常感谢
答案 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)