pandas 如何在列名中添加文件名?

zzzyeukh  于 2023-03-28  发布在  其他
关注(0)|答案(1)|浏览(90)

我有一个从几个csv文件创建的pandas Dataframe 。csv文件的结构都是相同的,所以我一遍又一遍地使用相同的列名。我希望列名可以由文件名展开(我有一个列表)它们来自。从this我知道如何向同名列添加计数,我知道如何重命名列。但我无法将正确的文件名与正确的列值相匹配。
这应该是代码的相关部分:

for i in range(len(file_list)):
    data = pd.read_table(file_list[i], encoding='unicode_escape')
    df = pd.DataFrame(data)
    df = df.drop(droplist, axis=1)
    main_dataframe = pd.concat([main_dataframe, df], axis=1)
bq3bfh9z

bq3bfh9z1#

您可以使用concat中的字典来生成MultiIndex:

list_of_files = ['f1.csv', 'f2.csv']
pd.concat({f: pd.read_table(f, encoding='unicode_escape', sep=',')
           for f in list_of_files}, axis=1)

示例:

# f1.csv
a,b
1,2
3,4

# f2.csv
a,b
5,6
7,8

输出:

f1.csv    f2.csv   
       a  b      a  b
0      1  2      5  6
1      3  4      7  8

在列表解析中使用add_prefix的替代方法:

pd.concat([pd.read_table(f, encoding='unicode_escape', sep=',')
                   .add_prefix(f[:-3]) # add prefix without ".csv" extension
           for f in list_of_files], axis=1))

输出:

f1.a  f1.b  f2.a  f2.b
0     1     2     5     6
1     3     4     7     8

相关问题