通过与另一个dataDrame映射来更改列名称

时间:2017-11-07 15:05:59

标签: python pandas dataframe

我已导入包含14列&的csv文件我想重命名一个数据框“columnNameDF”

中存在的所有列名

来源数据:

Column1,Column2,Column3,Column4,Column5,Column6,Column7,Column8,Column9,Column10,Column11,Column12,Column13,Column14
1,2,3,4,5,6,7,8,9,10,11,12,13,14

列重命名存储在columnNameDF中。

SourceColumns   Rename
Column1     Snapshot Date
Column2     Quarter End
Column3     Year End
Column4     RIA Ownership Type
Column5     Age Bracket
Column6     Gender
Column7     Channel Type
Column8     Exclude Non Producers
Column9     Firm
Column10    Firm Type
Column11    License
Column12    Retail BD Type
Column13    Retail BD Primary Type
Column14    Years A Rep

预期输出:

Snapshot Date,Quarter End,Year End,RIA Ownership Type,Age Bracket,Gender,Channel Type,Exclude Non Producers,Firm,Firm Type,License,Retail BD Type,Retail BD Primary Type,Years A Rep
1,2,3,4,5,6,7,8,9,10,11,12,13,1

如何在单个脚本中重命名所有列? 我想将它用于500多个csv文件,而源文件列的顺序不一样。

2 个答案:

答案 0 :(得分:2)

df

   SourceColumns                  Rename
0        Column1           Snapshot Date
1        Column2             Quarter End
2        Column3                Year End
3        Column4      RIA Ownership Type
4        Column5             Age Bracket
5        Column6                  Gender
6        Column7            Channel Type
7        Column8   Exclude Non Producers
8        Column9                    Firm
9       Column10               Firm Type
10      Column11                 License
11      Column12          Retail BD Type
12      Column13  Retail BD Primary Type
13      Column14             Years A Rep

df2

   Column1  Column2  Column3  Column4  Column5  Column6  Column7  Column8  \
0        1        2        3        4        5        6        7        8   

   Column9  Column10  Column11  Column12  Column13  Column14  
0        9        10        11        12        13        14  

在列映射的列上使用df.rename

df2 = df2.rename(columns=df.set_index('SourceColumns').Rename.to_dict())
df2


   Snapshot Date  Quarter End  Year End  RIA Ownership Type  Age Bracket  \
0              1            2         3                   4            5   

   Gender  Channel Type  Exclude Non Producers  Firm  Firm Type  License  \
0       6             7                      8     9         10       11   

   Retail BD Type  Retail BD Primary Type  Years A Rep  
0              12                      13           14  

答案 1 :(得分:0)

在Pandas版本0.21.0 set_axis中:

source_df.set_axis(columnNameDF['Rename'].values, axis=1, inplace=False)

输出:

   Snapshot Date  Quarter End  Year End  RIA Ownership Type  Age Bracket  \
0              1            2         3                   4            5   

   Gender  Channel Type  Exclude Non Producers  Firm  Firm Type  License  \
0       6             7                      8     9         10       11   

   Retail BD Type  Retail BD Primary Type  Years A Rep  
0              12                      13           14 
相关问题