[英]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_series
從df1
的列創建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.