python - 合并两个不同大小的数据框
问题描述
我有两个不同大小的数据框,我想合并它们。
这就像基于另一个不同大小的数据框对数据框列的“更新”。
这是一个示例输入:
数据框 1
CODUSU Situação TIPO1
0 1AB P A0
1 2C3 C B1
2 3AB P C1
数据框 2
CODUSU Situação ABC
0 1AB A 3
1 3AB A 4
我的输出应该是这样的:
数据框 3
CODUSU Situação TIPO1
0 1AB A A0
1 2C3 C B1
2 3AB A C1
PS:我是通过循环完成的,但我认为应该有更好更简单的方法来制作它!
我读了这个内容:pandas merging 101并写了这段代码:
df3=df1.merge(df2, on=['CODUSU'], how='left', indicator=False)
df3['Situação'] = np.where((df3['Situação_x'] == 'P') & (df3['Situação_y'] == 'A') , df3['Situação_y'] , df3['Situação_x'])
df3=df3.drop(columns=['Situação_x', 'Situação_y','ABC'])
df3 = df3[['CODUSU','Situação','TIPO1']]
瞧,df3正是我所需要的!谢谢大家!
PS:我已经找到答案了,有没有更好的地方来回答我自己的问题?
解决方案
df1.merge(df2,how='left', left_on='CODUSU', right_on='CODUSU')
这应该可以解决问题。
此外,值得注意的是,如果您希望生成的数据框不包含 ABC 列,您将使用 df2.drop("ABC") 而不仅仅是 df2。
推荐阅读
- python-3.x - 在 debian 11 Bullseye 上使用 Ansible 安装损坏的软件包
- javascript - 使用 jQuery 从 td 获取 html
- c++ - 在函数中返回 std::async
- express - 如何检查 pod1 中的 http 请求是否来自 kubernetes 集群内的 pod2?
- ios - 从单元格呈现 UIAlertController
- jquery - 数据表的日期范围过滤器在 laravel 中不起作用
- flutter - Flutter路由问题找不到路由RouteSetting的生成器
- excel - VBA将工作簿对象获取到打开它的工作簿
- javascript - 如何修复错误找不到nodejs的模块
- c# - 如何从 c# asp.net 中的重复下拉列表中获取选定的值