python - 根据 pandas 中的 csv 文件名重命名列

标签 python pandas csv

鉴于我正在读取 N 个 csv 文件并将它们合并到单个 Pandas DataFrame 中,例如:

dfs = [pd.read_csv(f) for f in list_of_files]
df = pd.concat(dfs, axis=1)

如何重命名每个文件中的列,以便它们包含基于文件名的后缀?

例如,如果文件 f1 和 f2 具有以下内容:

f1:

A
1
2
3

f2:

B
4
5
6

然后上面的列式 concat 产生:

A  B
1  4
2  5
3  6

...但是我想要:

A_f1  B_f2
   1     4
   2     5
   3     6

最佳答案

将你的 dfs 更改为 dict

dfs = {'f'+str(i+1) : pd.read_csv(f) for i,f in enumerate(list_of_files)}

然后使用cancat

s=pd.concat(dfs,1)
s.columns=s.columns.map('{0[1]}_{0[0]}'.format) 
s
Out[311]: 
   A_f1  B_f2
0     1     4
1     2     5
2     3     6

关于python - 根据 pandas 中的 csv 文件名重命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55132795/

相关文章:

python - urls.py 中的 if 条件 - django

python - 等同于 Delphi 中的 Python DocTest?

python - 有没有办法获取新的YouTube订阅者的电子邮件? python

python - 创建一个新列,将列表中其他两列的内容组合在一起

list - Pandas 从列表列表中一次添加多个新列

sql - 如何使用 Squirrel 将 SQL 查询的结果存储在 CSV 文件中?

c++ - 如何使用 C++ 在 CSV 文件上执行逐行操作(一些 x)

python - 如何更改 Kivy 中按钮的背景颜色?

python - 根据字符串过滤 pandas 上的列

csv - Prolog,读取一个csv文件并做一个谓词。找到所有