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_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
推荐阅读
- python - 无法在 django 中使用 update_or_create 方法将数据发布到数据库
- java - 在 Hibernate 中处理 Session 和 SessionFactory 的最佳实践是什么?
- spring-boot - 如何将 Zuul 配置为 Eureka Service Mesh 的代理
- angular - 控制组件模板内的 routerLink
- javascript - 如何多次添加具有不同内容的相同 XML 标记?
- postgresql - 通过 ScalikeJDBC 处理来自 postgres byteEA 类型列的数据
- java - 如何在 Spring @Service 和非 Spring 对象之间集成?
- javascript - 我如何操作这些数据以使 UI - React Native 可以接受?
- bash - 创建脚本以删除引用
- windows - 在任何文本编辑器的菜单上下文中插入一个项目(在 Windows 上)