python-使用另一个具有相同索引的数据框替换数据框中的值

时间:2020-08-13 15:35:18

标签: python pandas

我有一个数据框,其中某些列的值缺失:

a = pd.DataFrame(data = {"name":['bob','sue','dave'],'status':[np.NaN,np.NaN,'A'],'team':['red','blue',np.NaN]},index=[100,101,105])

数据框a

dataframe a

我有另一个具有相同索引的数据框,其中一些缺失值已被替换:

b = pd.DataFrame(data = {"name":['bob','sue','dave'],'status':['I','O','A'],'team':['red','blue',np.NaN]},index=[100,101,105])

数据框b

dataframe b

是否有一种方法可以将数据帧b映射到a,以便替换a中特定列的值? a中还有许多其他行不在b中,因此我只想替换具有相同索引的行。

我尝试了此操作,但是它将值设置为np.NaN

a['status'] = a['status'].map(b['status'])
a['team'] = a['team'].map(b['team'])

映射后的数据帧a

dataframe a after b has been mapped

2 个答案:

答案 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