簡體   English   中英

根據字典重命名 PANDAS 中的列

[英]Rename columns in PANDAS based on dictionary

我有一個數據框,我想根據我計划用作字典的另一個數據框重命名列。 例如,我的第一個數據幀是:

          AAA   BBB   CCC   DDD
 index   
  1       1     2     3     4
  2       5     6     7     8

並作為我想用作字典的第二個數據框:

           val1    val2
  index
    1      AAA      A7
    2      BBB      B0
    3      CCC      C3
    4      DDD      D1

我想得到的結果如下:

          A7    B0    C3    D1 
 index   
  1       1     2     3     4
  2       5     6     7     8

最初我想將第一個數據幀重新整形為長格式,然后與字典數據幀合並,然后重新整形為寬格式。 但是我認為這是非常低效的,所以我想使用一種更有效的方式(如果存在的話)。 非常感謝四位的幫助。

df.rename有一個名為columns的參數,它接受字典:

df.rename(columns=dict(zip(df2["val1"], df2["val2"])))

出去:

    A7  B0  C3  D1
0   1   2   3   4
1   5   6   7   8

它返回一個新的 DataFrame。 您可以使用inplace=True ,也可以將其分配回原始數據幀。

我認為您可以首先從df2創建dictionary ,然后通過to_seriesdf1的列創建Series ,然后使用dictionary進行map

print df1
       AAA  BBB  CCC  DDD
index                    
1        1    2    3    4
2        5    6    7    8

print df2
      val1 val2
index          
1      AAA   A7
2      BBB   B0
3      CCC   C3
4      DDD   D1

d = df2.set_index('val1').to_dict()
print d['val2']
{'AAA': 'A7', 'BBB': 'B0', 'CCC': 'C3', 'DDD': 'D1'}

df1.columns = df1.columns.to_series().map(d['val2'])
print df1
       A7  B0  C3  D1
index                
1       1   2   3   4
2       5   6   7   8

您也可以只使用這一行:

df1.columns=[df2['val2']]

輸出:

    A7  B0  C3  D1
0   1   2   3   7
1   5   6   7   8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM