“我的数据”框在孔下方
fdf = pd.DataFrame([{'name': 'john', 'john': np.nan, 'mac': np.nan,'val':22}, {'name': 'mac', 'john': np.nan, 'mac': np.nan,'val':55}], columns=["name", "john", "mac",'val'])
fdf
Out[466]:
name john mac val
0 john NaN NaN 22
1 mac NaN NaN 55
我想用对应于列名称的匹配行值替换NaN值
输出
fdf
Out[466]:
name john mac val
0 john 22 NaN 22
1 mac NaN 55 55
Here 1st row of name column value is john and corresponding val column value is 22 , so replace the value in matching column name john.
任何帮助表示赞赏
答案 0 :(得分:3)
您可以在df.combine_first()
之后使用df.update()
/ unstack()
:
s=fdf.set_index('name',append=True)['val'].unstack()
fdf = fdf.combine_first(s).reindex(columns=fdf.columns) #preferred for updating NaN
#or update:-> fdf.update(s)
name john mac val
0 john 22.0 NaN 22
1 mac NaN 55.0 55