簡體   English   中英

基於兩列Python Panda區別兩個數據框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM