如何在Pandas中追加列名不同的两个DataFrame并匹配对应列
如何合并列名不同的两个DataFrame并匹配对应列
这个问题在pandas里处理起来其实挺简单的,核心就是先把两个DataFrame的列名对齐,再合并就行。我给你举个具体的例子,一步步拆解操作:
1. 先明确你的DataFrame示例
假设我们有两个列名不同但数据含义对应的DataFrame:
import pandas as pd # 原DataFrame a a = pd.DataFrame({ '姓名': ['张三', '李四'], '年龄': [25, 30], '城市': ['北京', '上海'] }) # 需要追加的DataFrame b,列名是英文 b = pd.DataFrame({ 'name': ['王五', '赵六'], 'age': [28, 35], 'city': ['广州', '深圳'] })
2. 建立列名映射关系
首先你得清楚b的每一列对应a的哪一列,把这个对应关系做成一个字典——这是关键步骤,告诉程序怎么匹配列:
# 键是b的列名,值是a对应的列名 col_mapping = {'name': '姓名', 'age': '年龄', 'city': '城市'}
3. 重命名b的列,和a对齐
用pandas的rename()方法把b的列名改成和a一致的:
b_renamed = b.rename(columns=col_mapping)
4. 合并两个DataFrame
用pd.concat()把a和重命名后的b合并,记得加上ignore_index=True让合并后的索引重新排序,避免索引重复:
c = pd.concat([a, b_renamed], ignore_index=True)
最终结果
运行完上面的代码后,得到的c就是你想要的结果:
姓名 年龄 城市 0 张三 25 北京 1 李四 30 上海 2 王五 28 广州 3 赵六 35 深圳
特殊情况处理
- 如果b有a没有的额外列:合并后a的行对应这些列会显示
NaN;如果想只保留a原有的列,可以在重命名后加上b_renamed = b_renamed[a.columns],这样就只取和a匹配的列。 - 如果a有b没有的列:合并后b的行对应这些列同样会显示
NaN,这是正常的缺失值逻辑,你可以后续用fillna()填充默认值。
内容的提问来源于stack exchange,提问作者Yogi
相关产品推荐
相关产品推荐

