python - 在保留所有列的同时合并 2 个熊猫数据框
问题描述
我正在尝试合并 2 个熊猫数据框。他们看起来像
DF1
col1 col2 col3 col4 col5
A SAT MON 5 3
B MON FRI -1 2
C FRI TUE 8 4
D TUE WED 2 4
DF2
col1 col2 col3 col4 col5
A SAT MON 5 3
B MON FRI -1 2
C WED THUR 8 4
D THUR SAT 2 4
想要的结果
col1 col2 col3 col4 col5 col1_2 col2_2 col3_2 col4_2 col5_2
A SAT MON 5 3 A SAT MON 5 3
B MON FRI -1 2 B MON FRI -1 2
C FRI TUE 8 4
D TUE WED 2 4
C WED THUR 8 4
D THUR SAT 2 4
我使用过merged_df = df1.merge(df2, on=['col1','col2','col3'], how='outer')
,但它给了我以下结果,这是我所期望的,但不想要。我想要类似上面的结果。反正有没有得到我的预期结果?
结果
col1 col2 col3 col4 col5
A SAT MON 5 3
B MON FRI -1 2
C FRI TUE 8 4
D TUE WED 2 4
C WED THUR 8 4
D THUR SAT 2 4
解决方案
尝试combine_first
l=['col1','col2','col3']
df = df1.set_index(l).combine_first(df2.set_index(l)).reset_index()
df
Out[28]:
col1 col2 col3 col4 col5
0 A SAT MON 5.0 3.0
1 B MON FRI -1.0 2.0
2 C FRI TUE 8.0 4.0
3 C WED THUR 8.0 4.0
4 D THUR SAT 2.0 4.0
5 D TUE WED 2.0 4.0
推荐阅读
- php - 删除 Woocommerce 中的“运输”结帐字段错误
- android - 我尝试使用 Androidx 实现房间数据库,但出现错误
- scala - 地图功能无法与 Dataframe(toDF) 一起正常工作
- mysql - 在 laravel 中使用密钥环
- python - 将颜色条添加到轴并保持大小
- google-api - 使用 Google API 定期进行 Google Drive/Gmail 本地备份
- php - PHP:使用数组在另一个多维数组中获取值
- android - DJI Spark:缺少对 FlightController.setMaxFlightHeight() FlightController.setMaxFlightRadius() 的支持
- security - Docker 安全 - 允许交互式外壳?
- plsql - PL/SQL:按组对数字进行散列