假设我有2个以下的数据帧
df1 =
userid | first_name | last_name | title
-----------------------------------------------
u1 | user1 | test | manager
u2 | user2 | test | creator
u4 | user4 | test | Analysts
df2 =
userid | first_name |last_name |title
----------------------------------------------
u1 | user1 | test | designer
u2 | user2 | test | creator
u3 | user2 | test | creator
我用过panda merge命令
pd.merge(df1,df2,how='outer',on=['userid','first_name','last_name','title'],indicator=True)
将df1与df2
进行比较时,我期待的结果是什么userid |first_name |last_name| title | status|
--------------------------------------------------
u1 | user1 | test | manager | changed
u2 | user2 | test | creator | Nochange
u3 | user2 | test | creator | Deleted
u4 | user4 | test | Analysts | New
但是当我使用熊猫合并时我得到了什么
userid |first_name| last_name| title | _merge
u1 | user1 |test |manager | left_only
u2 | user2 |test | creator |both
u3 | user2 |test | creator | left_only
u1 | user1 |test | designer | rigth_only
所以在上面的输出中我可以看到_merge字段给我一些数据来过滤,但我需要找到一种方法来识别这3个以下项目的解决方案
知道如何实现所需的输出吗?任何帮助都非常感谢
答案 0 :(得分:0)
我能够通过将问题分成两个步骤来匹配输出:
1)按userid,first_name,last_name和count记录分组。这些是已更改的记录 - 将_merge指示器设置为已更改。
2)过滤重复的userid,first_name,last_name记录并替换指标。
如果left_only将始终为“New”并且right_only将始终为“Deleted”(根据示例),并且在笔记本中,我试图引起对此的注意,这是有效的。
交互式: https://notebooks.azure.com/emican86/libraries/49373439
静态: https://github.com/emican86/49373439/blob/master/49373439.ipynb