You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:17:59