[英]Difference two dataframes based on two columns Python Panda
Df1
A B C
1 1 'a'
2 3 'b'
3 4 'c'
Df2
A B C
1 1 'k'
5 4 'e'
预期输出(在Df1和Df2求和并合并之后),即Df1-Df2然后合并
output
A B C
1 1 'a'
2 3 'b'
3 4 'c'
5 4 'e'
区别应基于两列A和B,而不是所有三列。 我不在乎Df2和Df1中的C列。
尝试这个:
In [44]: df1.set_index(['A','B']).combine_first(df2.set_index(['A','B'])).reset_index()
Out[44]:
A B C
0 1 1 'a'
1 2 3 'b'
2 3 4 'c'
3 5 4 'e'
这是一个外部联接,如果在df1中不知道值,则从df2合并到列C中:
dfx = df1.merge(df2, how='outer', on=['A', 'B'])
dfx['C'] = dfx.apply(
lambda r: r.C_x if not pd.isnull(r.C_x) else r.C_y, axis=1)
dfx[['A', 'B', 'C']]
=>
A B C
0 1 1 a
1 2 3 b
2 3 4 c
3 5 4 e
使用concat和drop_duplicates:
output = pd.concat([df1, df2])
output = output.drop_duplicates(subset = ["A", "B"], keep = 'first')
*所需的df:*
A B C
0 1 1 a
1 2 3 b
2 3 4 c
1 5 4 e
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.