我有一个数据框,其中某些列的值缺失:
a = pd.DataFrame(data = {"name":['bob','sue','dave'],'status':[np.NaN,np.NaN,'A'],'team':['red','blue',np.NaN]},index=[100,101,105])
数据框a
我有另一个具有相同索引的数据框,其中一些缺失值已被替换:
b = pd.DataFrame(data = {"name":['bob','sue','dave'],'status':['I','O','A'],'team':['red','blue',np.NaN]},index=[100,101,105])
数据框b
是否有一种方法可以将数据帧b
映射到a
,以便替换a
中特定列的值? a
中还有许多其他行不在b
中,因此我只想替换具有相同索引的行。
我尝试了此操作,但是它将值设置为np.NaN
:
a['status'] = a['status'].map(b['status'])
a['team'] = a['team'].map(b['team'])
映射后的数据帧a
答案 0 :(得分:1)
可以通过使用slice操作来完成。第二个数据帧的索引用于切片第一个数据帧
然后分配第二个数据帧。
a.loc[b.index] = b
输出:
name status team
100 bob I red
101 sue O blue
105 dave A NaN
答案 1 :(得分:1)
所有归功于@Sushanth
>>> a.combine_first(b)
name status team
100 bob I red
101 sue O blue
105 dave A NaN