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

Python Pandas教程:合并列名不同的DataFrame

合并列名不同的Pandas DataFrame

针对列名不一致的DataFrame合并,有两种简单可靠的实现方式,以下是具体操作及示例:

方法1:直接使用merge()的left_on和right_on参数

无需修改原DataFrame的列名,直接指定两边用于匹配的列即可完成合并,这是最灵活的方式。

示例代码:

import pandas as pd

# 创建示例DataFrame
df1 = pd.DataFrame({
    'employee_id': [101, 102, 103, 104],
    'salary': [5000, 6000, 7500, 8000]
})

df2 = pd.DataFrame({
    'emp_id': [102, 103, 105, 106],
    'income': [6000, 7500, 9000, 8500]
})

# 内连接(默认行为,仅保留两边都匹配的行)
merged_inner = pd.merge(df1, df2, left_on='employee_id', right_on='emp_id')

# 左连接(保留df1的所有行,匹配不到的df2列填充NaN)
merged_left = pd.merge(df1, df2, left_on='employee_id', right_on='emp_id', how='left')

# 外连接(保留所有行,匹配不到的位置填充NaN)
merged_outer = pd.merge(df1, df2, left_on='employee_id', right_on='emp_id', how='outer')

# 可选:删除重复的匹配列
merged_inner = merged_inner.drop('emp_id', axis=1)

方法2:重命名列后合并

如果需要统一列名,可先修改其中一个DataFrame的列名,再使用on参数完成合并,适合后续需要统一数据结构的场景。

示例代码:

# 重命名df2的emp_id列为employee_id
df2_renamed = df2.rename(columns={'emp_id': 'employee_id'})

# 基于统一列名合并
merged_df = pd.merge(df1, df2_renamed, on='employee_id')

内容的提问来源于stack exchange,提问作者Satvir Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:52:39