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
相关产品推荐
相关产品推荐

