我刚开始在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:
^{pr2}$而且,这里的主键是ID&Name(实际上,键的数量可能会有所不同),我需要
匹配\u-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 u不匹配:
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')
这就产生了两个数据帧中的所有唯一键。但这也会产生不匹配的记录。在
但我得到的结果是:
^{pr2}$第四个记录也被包括在内。在
在这里,只有工资列是变化的,但在实时,它可能是一个列科尔比较。在
从这里,我只需要得到匹配的记录到匹配的_df,而不匹配的记录到不匹配的_df。在
请帮我做这件事。在
Note: My dataset might be a massive one (100 million records in both datasets) so, please get me an effective approach reducing the time of execution.
提前谢谢。在
对您的问题的简单回答是
df1.where
:注意:生成的具有NaN的单元格不满足条件,即它们在两个数据帧中不相等。具有实际值的是两个数据帧中相等的值
使用
^{2}$pd.merge
:如果您只想合并没有列或索引级别的df1&df1,那么它将默认为两个数据帧中列的交集。在如果要联接列或索引级别,请使用
on
。在对于
df2
中的不匹配:您可以选择isin(dict)方法:梅布尔给的另一种方式。在
我的解决方案会有点不同,只需要从另一个数据集中复制工资。在
例如:
相关问题 更多 >
编程相关推荐