我正在读取多个 csv 文件并将它们组合成一个数据帧,如下所示:
pd.concat([pd.read_csv(f, encoding='latin-1') for f in glob.glob('*.csv')],
ignore_index=False, sort=False)
Run Code Online (Sandbox Code Playgroud)
问题:
我想根据连接到数据帧的每个 csv 文件的 csv 文件名添加任何 csv(数据帧)中不存在的列。任何帮助将不胜感激。
glob.glob返回普通字符串,因此您只需在循环中向每个单独的数据帧添加一列即可。
假设您的目录中有文件 df1.csv 和 df2.csv:
import glob
import pandas as pd
files = glob.glob('df*csv')
dfs = []
for file in files:
df = pd.read_csv(file)
df['filename'] = file
dfs.append(df)
df = pd.concat(dfs, ignore_index=True)
df
a b filename
0 1 2 df1.csv
1 3 4 df1.csv
2 5 6 df2.csv
3 7 8 df2.csv
Run Code Online (Sandbox Code Playgroud)