如何用另一DataFrame的对应值替换目标DataFrame的列名?
解决方法
问题场景
现有两个DataFrame:
df1结构:
| A | B |
|---|---|
| X | y1 |
| XX | y2 |
df2结构:
| X | XX |
|---|---|
| 1 | 2 |
| 2 | 3 |
需要将df2的列名(X、XX)替换为df1中对应行的B列值,最终得到列名为y1、y2的df2。
代码实现
首先用pandas构建两个DataFrame:
import pandas as pd # 构建df1 df1 = pd.DataFrame({ 'A': ['X', 'XX'], 'B': ['y1', 'y2'] }) # 构建df2 df2 = pd.DataFrame({ 'X': [1, 2], 'XX': [2, 3] })
方法一:直接替换列名(适用于列顺序完全匹配的情况)
df2.columns = df1['B']
方法二:通过映射字典重命名(通用方法,不受列顺序影响)
# 创建列名映射关系:原列名 -> 目标列名 col_mapping = dict(zip(df1['A'], df1['B'])) # 重命名df2的列 df2 = df2.rename(columns=col_mapping)
最终结果
执行后df2的结构为:
y1 y2 0 1 2 1 2 3
内容的提问来源于stack exchange,提问作者SmackCat
相关产品推荐
相关产品推荐

