[英]How to impute columns value in one dataframe from that of another dataframe
我有兩個數據框 df1 和 df2,如下所示。 我需要用 df2 中的相應值替換 df1 中的“未知”。 df1 和 df2 都有相同的列名“FIRST NAME”和“gender”,而 df1 有更多行重復值,以及這里沒有顯示的其他列。 我寫了如下代碼,但錯誤拋出。 如何解決? 謝謝!
df1['gender'] = df1['gender'][df1['gender']=='unknown'].map(df2.set_index('FIRST_NAME')['gender'])
InvalidIndexError: Reindexing only valid with uniquely valued Index objects
將Series.map
與DataFrame.loc
Series.map
使用
m = df1['gender'].eq('unknown')
df1.loc['gender',m] = df1.loc[m,'FIRST NAME'].map(df2.set_index('FIRST NAME')['gender'])
df1['gender'] = df1['FIRST NAME'].map(df2.set_index('FIRST NAME')['gender']).where(m,df1['gender'])
重復值
如果df2['FIRST NAME']
存在重復值,如果性別和 FIRST NAME 都重復,則需要使用DataFrame.drop_duplicates
:
df1['gender'] = df1['FIRST NAME'].map(df2.drop_duplicates().set_index('FIRST NAME')['gender']).where(m,df1['gender'])
如果對於相同的名字需要不同的性別,則使用DataFrame.merge
df1 = df1[['FIRST NAME']].merge(df2,on ='FIRST NAME',how = 'left')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.