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

Pandas:基于共同列x合并DataFrame,仅保留交集x值并重命名y列

Pandas合并DataFrame:保留共同x值并拆分y列

需求说明

现有两个包含x和y列的DataFrame:

  • 每个DataFrame内的x值唯一
  • 两者的x值存在部分重叠
  • 需要合并后仅保留双方都存在的x值,并将原DataFrame的y列分别存为y_1(对应df2)和y_2(对应df1)

示例数据

import pandas as pd

df1 = pd.DataFrame({'x': ['1', '2', '3', '4', '5', '6'],
                    'y': ['A', 'B', 'C', 'D', 'E', 'F']})

df2 = pd.DataFrame({'x': ['3', '4', '10', '2', '12', '6', '8', '9'],
                    'y': ['A', 'G', 'H', 'E', 'F', 'J', 'L', 'B']})

df1内容:

x  y
0  1  A
1  2  B
2  3  C
3  4  D
4  5  E
5  6  F

df2内容:

x  y
0   3  A
1   4  G
2  10  H
3   2  E
4  12  F
5   6  J
6   8  L
7   9  B

解决方案代码

# 重命名y列,避免合并后列名冲突
df1_renamed = df1.rename(columns={'y': 'y_2'})
df2_renamed = df2.rename(columns={'y': 'y_1'})

# 基于x列执行内连接,仅保留双方共有的x值
merged_df = pd.merge(df2_renamed, df1_renamed, on='x', how='inner')

# 调整列顺序为目标格式
merged_df = merged_df[['x', 'y_1', 'y_2']]

print(merged_df)

输出结果

x y_1 y_2
0  3   A   C
1  4   G   D
2  2   E   B
3  6   J   F

关键说明

  • rename:给两个DataFrame的y列重命名,明确对应关系(y_1来自df2,y_2来自df1)
  • pd.merge(how='inner'):内连接模式,自动过滤掉仅在单个DataFrame中存在的x值
  • 列顺序调整:确保输出列与期望格式一致

内容的提问来源于stack exchange,提问作者Brain Bytes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:45:00