我正在使用缺少许多值的数据框。 Iam正在寻找替换缺失值的有效方法。以下是数据框的示例:
s/n Name Home_Zip work_zip Family_zip
1 John 56729 N/A 836AB
2 sawn N/A N/A 73836
3 Michael N/A 839CD 83093
4 Nathan 93932 78393 N/a
5 Jack N/A N/A N/A
在这里,我想用Home_Zip
中首先出现的方式填充work_zip
中的缺失值
不是null的返回该值,否则返回family_zip
。如果是全部价值
为null时,它将返回未知数。
s/n Name Home_Zip work_zip Family_zip
1 John 56729 N/A 836AB
2 sawn 73836 N/A 73836
3 Michael 839CD 839CD 83093
4 Nathan 93932 78393 N/a
5 Jack Unkown N/A N/A
答案 0 :(得分:1)
您可以使用bfill
,然后使用fillna()
。
df['Home_Zip'] = df.iloc[:, 2:].bfill(1).fillna('Unknown')['Home_Zip']
或链接多个fillna
:
df['Home_Zip'] = (df['Home_Zip'].fillna(df['work_zip'])
.fillna(df['Family_zip'])
.fillna('Unknown')
)
输出:
s/n Name Home_Zip work_zip Family_zip
0 1 John 56729 NaN 836AB
1 2 sawn 73836 NaN 73836
2 3 Michael 839CD 839CD 83093
3 4 Nathan 93932 78393 N/a
4 5 Jack Unknown NaN NaN