簡體   English   中英

在唯一ID上連接兩個數據框,但如果id不存在,則使用另一個值

[英]Joining two dataframes on unique ID, but using another value if id doesn't exist

我有兩個這樣的數據框:

UID    mainColumn .... (other columns of data)
1      apple
2      orange
3      apple
4      orange
5      berry
....

UID2   mainColumn2
1      truck
3      car
4      boat
5      plane
...

我需要將第二個數據框加入基於UID的數據框,但是,如果df2不包含uid,則maincolumn值就是我要使用的值。 在上面的示例中,UID2不包含值2,因此最終表看起來像

UID    mainColumn ....
1      truck
2      orange
3      car
4      boat
5      plane
...

現在我知道我們可以以

df1=df1.merge(df2,left_on='UID', right_on='UID2')

但我遇到的問題不是替換丟失的值,並確保仍將其包括在內。 謝謝!

在將df2的列重命名為df1之后,可以使用combine_first() (例如,將UID2更改為UID ..):

df2.columns=df1.columns#be careful, rename only matching columns
final_df=df2.set_index('UID').combine_first(df1.set_index('UID')).reset_index()

  UID mainColumn
0    1      truck
1    2     orange
2    3        car
3    4       boat
4    5      plane

我們可以先使用merge ,然后fillna缺失的值,最后drop多余的列:

final = df1.merge(df2, left_on='UID', right_on='UID2', how='left').drop('UID2', axis=1)

final['mainColumn'] = final['mainColumn2'].fillna(final['mainColumn'])

final.drop('mainColumn2', axis=1, inplace=True)

   UID mainColumn
0    1      truck
1    2     orange
2    3        car
3    4       boat
4    5      plane

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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