【发布时间】:2018-10-21 10:35:42
【问题描述】:
我是在 python 中使用 pandas 的新手,但我对使用 python 有很好的了解。
我有两个数据帧,我必须从中获取匹配记录和不匹配记录到新数据帧中。
例子:
DF1:
ID Name Number DOB Salary
1 AAA 1234 12-05-1996 100000
2 BBB 1235 16-08-1997 200000
3 CCC 1236 24-04-1998 389999
4 DDD 1237 05-09-2000 450000
DF2:
ID Name Number DOB Salary
1 AAA 1234 12-05-1996 100000
2 BBB 1235 16-08-1997 200000
3 CCC 1236 24-04-1998 389999
4 DDD 1237 05-09-2000 540000
而且,这里的主键是 ID 和名称(实际上键的数量可能会有所不同),我需要得到 p>
Match_df:
ID Name Number DOB Salary
1 AAA 1234 12-05-1996 100000
2 BBB 1235 16-08-1997 200000
3 CCC 1236 24-04-1998 389999
不匹配_df:
ID Name Number DOB Salary
4 DDD 1237 05-09-2000 540000
我已经尝试了所有可能的方法,例如
pd.merge(df1, df2, left_on=[ID,Name],right_on=[ID,Name], how='inner')
这会产生两个数据帧中的所有唯一键。但这也会产生不匹配的记录。
但我得到了这个结果:
ID Name Number DOB Salary
1 AAA 1234 12-05-1996 100000
2 BBB 1235 16-08-1997 200000
3 CCC 1236 24-04-1998 389999
4 DDD 1237 05-09-2000 540000
第 4 条记录也包含在内。
这里,只有工资列是变化的,但在实时,它可能是要比较的列的列表。
据此,我只需要将匹配的记录获取到matched_df,将不匹配的记录获取到mismatch_df。
请帮我做这件事。
注意:我的数据集可能是一个庞大的数据集(两个数据集中都有 1 亿条记录),所以请给我一个有效的方法来减少执行时间。
提前致谢。
【问题讨论】:
-
您有多个答案,您可以使用其中一个从未回答队列中清除此问题。
-
是的,但实际上我仍在解决这个问题。这就是为什么我仍然持有这个。