簡體   English   中英

如何從另一個數據幀的列值估算一個數據幀中的列值

[英]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.mapDataFrame.loc Series.map使用

m = df1['gender'].eq('unknown')
df1.loc['gender',m] = df1.loc[m,'FIRST NAME'].map(df2.set_index('FIRST NAME')['gender'])

Series.where

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.

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