Skip to main content
 首页 » 编程设计

python之Pandas Merge之基于键引入相同的列值

2025年05月04日22cloudgamer

我有 3 个这样的数据框,

df = pd.DataFrame([[1, 3], [2, 4], [3,6], [4,12], [5,18]], columns=['A', 'B']) 
df2 = pd.DataFrame([[1, 5], [2, 6], [3,9]], columns=['A', 'C']) 
df3 = pd.DataFrame([[4, 15, "hello"], [5, 19, "yes"]], columns=['A', 'C', 'D']) 

他们看起来像这样, df

    A   B 
0   1   3 
1   2   4 
2   3   6 
3   4   12 
4   5   18 

df2

    A   C 
0   1   5 
1   2   6 
2   3   9 

df3

   A    C   D 
0   4   15  hello 
1   5   19  yes 

我的合并,第一次合并,

f_merge = pd.merge(df, df2, on='A',how='left') 

第二次合并,(first_merge 与 df3)

s_merge = pd.merge(f_merge, df3, on='A', how='left') 

我得到这样的输出,

    A   B   C_x  C_y       D 
0   1   3   5.0  NaN      NaN 
1   2   4   6.0  NaN      NaN 
2   3   6   9.0  NaN      NaN 
3   4   12  NaN  15.0     hello 
4   5   18  NaN  19.0     yes 

我需要这样,

    A   B   C        D 
0   1   3   5.0     NaN 
1   2   4   6.0     NaN 
2   3   6   9.0     NaN 
3   4   12  15.0    hello 
4   5   18  19.0    yes 

我怎样才能实现这个输出?任何建议都会很棒。

请您参考如下方法:

合并前连接 df2 和 df3。

new_df = pd.merge(df, pd.concat([df2, df3], ignore_index=True), on='A') 
 
new_df 
 
Out:  
   A   B   C      D 
0  1   3   5    NaN 
1  2   4   6    NaN 
2  3   6   9    NaN 
3  4  12  15  hello 
4  5  18  19    yes