【问题标题】:Renaming columns based on csv filename in pandas根据熊猫中的csv文件名重命名列
【发布时间】:2019-03-13 09:23:50
【问题描述】:

鉴于我正在读取 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

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

    将您的 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
    

    【讨论】:

      【解决方案2】:

      你可以使用add_suffix 如:

      dfs = [pd.read_csv(f).add_suffix('-' + str(f)) for f in list_of_files]
      

      【讨论】:

        【解决方案3】:

        您可以在使用pd.concat之前将suffixes添加到您的df中:

        lst_dfs = []
        
        for file in list_of_files:
            df = pd.read_csv(file)
            df = df.add_suffix(f'_{file}')
            lst_dfs.append(df)
        
        df_all = pd.concat(lst_dfs, axis=1)
        

        编辑

        一个包含两个 csv 文件的小测试

        list_of_files = ['table1.csv', 'table2.csv']
        
        lst_dfs = []
        
        for file in list_of_files:
            df = pd.read_csv(file, sep='|')
            df = df.add_suffix(f'_{file}')
            lst_dfs.append(df)
        
        df_all = pd.concat(lst_dfs, axis=1)
        
        #Optional to remove the filename extension
        df_all.columns = df_all.columns.str.replace('.csv', '')
        
        print(df_all)
          key_table1  value_table1 key_table2  value_table2
        0          A     -0.323896          B      0.050969
        1          B      0.073764          D     -0.228590
        2          C     -0.798652          E     -2.160319
        3          D      0.970627          F     -0.213936
        

        【讨论】:

          猜你喜欢
          • 2021-02-03
          • 2019-09-15
          • 2016-12-23
          • 2017-12-23
          • 2021-08-15
          • 2014-11-23
          • 2013-10-25
          • 2021-03-20
          相关资源
          最近更新 更多