如何通过另一张Pandas DataFrame为目标DataFrame重命名列名
Pandas DataFrame 列名按映射表重命名方案
核心逻辑就是你推测的字典映射方案,总共两步即可实现需求:
- 第一步:将存储映射关系的df_B转换为列名字典
代码:col_map = df_B.set_index('keys')['names'].to_dict()
执行后得到的字典结构为{'a': 'X', 'b': 'Y', 'x': 'Z'},完全符合rename方法的入参要求。 - 第二步:调用rename方法对df_A的列名做批量重命名,生成目标df_C
代码:df_C = df_A.rename(columns=col_map)
完整可运行测试代码
import pandas as pd # 构造示例df_A df_A = pd.DataFrame( data={'a': [65,26,47], 'b': [12,1,5], 'x': [1,5,6]}, index=pd.to_datetime(['2017-11-01','2017-11-02','2017-11-03']) ) df_A.index.name = 'date' # 构造示例df_B df_B = pd.DataFrame( data={'keys': ['a','b','x'], 'names': ['X','Y','Z']} ) # 执行重命名操作 col_map = df_B.set_index('keys')['names'].to_dict() df_C = df_A.rename(columns=col_map) # 输出验证结果 print(df_C)
补充说明
rename方法默认会自动忽略映射字典中不存在于df_A列名的键,不会报错,如果你需要确保所有df_A的列都被覆盖映射,可以自行加校验逻辑。
内容的提问来源于stack exchange,提问作者drango
相关产品推荐
相关产品推荐

