使用共享列合并Pandas数据帧,在左侧使用右侧的值填充fillna

12 浏览
0 Comments

使用共享列合并Pandas数据帧,在左侧使用右侧的值填充fillna

我想将两个数据框合并,并用右侧数据框中的值替换左侧数据框中的nan值。我可以使用以下三行代码来完成,但我想知道是否有更好/更短的方法?

# 示例数据(我的实际数据框大小约为500k行x11列)

df1 = pd.DataFrame({'a': [1,2,3,4], 'b': [0,1,np.nan, 1], 'e': ['a', 1, 2,'b']})

df2 = pd.DataFrame({'a': [1,2,3,4], 'b': [np.nan, 1, 0, 1]})

# 合并数据框...

df = df1.merge(df2, on='a', how='left')

# 用右侧数据框填充左侧数据框中'b'列的nan值...

df['b'] = df['b_x'].fillna(df['b_y'])

# 删除不再需要的列

df = df.drop(['b_x', 'b_y'], axis=1)

2023年更新

对于非nan但相似的更新

df1 = df1.set_index('a')

df2 = df2.set_index('a')

df1.update(df2)

df1.reset_index(inplace=True)

0