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

标签 python pandas merge

我有 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_mergedf3)

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

关于python - Pandas Merge - 基于键引入相同的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58378970/

相关文章:

python - 检查 Pandas 数据框的异常值

python - 使用十六进制值操作不适用于十六进制函数

python - 如何传递包含 url 的内容? ,/, & 里面的flask webservice方法

mysql - 如何将 pandas 数据框作为表写入 MySQL 数据库?

python - 是否可以加速 python IO?

python - pandas重复记录查找相同和不同的列

python - 对 Pandas 数据帧的所有元素应用 if/then 条件

SQL合并两个结果集

python - Pandas:使用另一个数据帧中的重复行更新多个数据帧列

python - 合并字典而不覆盖以前的值,其中值是一个列表