【发布时间】:2019-11-12 11:48:42
【问题描述】:
我正在尝试合并两个数据帧并将左侧 df 中的 nan 替换为右侧 df,我可以使用如下三行代码来完成,但我想知道是否有更好/更短的方法?
# Example data (my actual df is ~500k rows x 11 cols)
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]})
# Merge the dataframes...
df = df1.merge(df2, on='a', how='left')
# Fillna in 'b' column of left df with right df...
df['b'] = df['b_x'].fillna(df['b_y'])
# Drop the columns no longer needed
df = df.drop(['b_x', 'b_y'], axis=1)
【问题讨论】:
-
我改写了您的问题以说明所需的行为:“用右 df 填充左 df 的 'b' 列”。你真的想跳过左合并,首先给你两个不需要的列'b_x,b_y',然后不得不操纵它们。这就是
update()的用途。
标签: python pandas dataframe merge