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

