繁体   English   中英

根据条件-(Python,Pandas)替换合并数据框中的NaN

[英]replace NaNs in the merged dataframe based on the condition --(Python,Pandas)

我有2个数据框df1

ID     df1_Members
100    Eric
200    Chris
300    Jordan
400    Samantha
600    Audrey

DF2

ID    df2_Members
100   Eric
200   Chris
300   Jordan
400   NaN
500   NaN

我正在合并数据框`

df_merge=pd.merge(df1,df2,on='ID',how='left')

合并的数据框看起来像这样

ID  df1_Members  df2_Members
100  Eric         Eric
200  Chris        Chris
300  Jordan        Jordan
400  Samantha      NaN
600  Audrey        NaN

我想将与ID 400对应的NaN替换为“ No Data”,将与600对应的ID替换为“ ID not exist”,因为ID 600不在df2中

我正在尝试这样做,但是没有用

if (df_merge['df2_Members']==np.nan) & (df1['ID'].isin(df2['ID'])):
    df_merge['df2_Members'].fillna('No Data',inplace=True)
#ID in df1 doesn't exist in df2
elif (df_merge['df2_Members']==np.nan) &(~df1['ID'].isin(df2['ID'])):
    df_merge['df2_Members']="ID doesn't exist in df2"

`

尝试这个:

df_merge.loc[(df_merge['df2_Members'].isna()) & (df_merge['ID'].isin(df2['ID'])), 'df2_Members'] = 'No Data'
df_merge.loc[(df_merge['df2_Members'].isna()) & (~df_merge['ID'].isin(df2['ID'])), 'df2_Members'] = "ID doesn't exist in df2"

df_merge

应该返回你想要的

    ID  df1_Members df2_Members
0   100 Eric        Eric
1   200 Chris       Chris
2   300 Jordan      Jordan
3   400 Samantha    No Data
4   500 Audrey      No Data
5   600 Johnny      ID doesn't exist in df2

我添加了ID 600作为df2中不存在的另一个名称

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM