[英]Fill NaNs of pandas.DataFrame based on condition over another column
[英]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.