Python 使用来自另一个数据帧的同一列的值更新数据帧中的列
我有一个较大的数据框,其中有一个列,我想用一个较小的数据框中的新值更新它,只有在另一个列的行值匹配的情况下。左连接有正确的行,但有两列值需要“更新”(左和右)。我尝试了一个带drops的左合并,但是当然,如果匹配的列不匹配,我将尝试更新列中的值。我也尝试过这方面的变化:Python 使用来自另一个数据帧的同一列的值更新数据帧中的列,python,pandas,Python,Pandas,我有一个较大的数据框,其中有一个列,我想用一个较小的数据框中的新值更新它,只有在另一个列的行值匹配的情况下。左连接有正确的行,但有两列值需要“更新”(左和右)。我尝试了一个带drops的左合并,但是当然,如果匹配的列不匹配,我将尝试更新列中的值。我也尝试过这方面的变化: tips.loc[tips['tip'] < 2, 'tip'] = 2 结果应该如下所示: CAT Value 0 A 12 1 B 34 2 C 22 3 D 43
tips.loc[tips['tip'] < 2, 'tip'] = 2
结果应该如下所示:
CAT Value
0 A 12
1 B 34
2 C 22
3 D 43
4 E 21
虽然本例中的左框已经更新,但我并不是专门针对这种情况。我想覆盖其中的任何值。有什么帮助吗?Thx.如果值存在,您似乎希望将
df
中的值替换为df2
中相应的值。也就是说,假设您有一个CAT
F,它在df
中的相应值为36
,您希望它被99(来自df2
)所取代
使用合并
:
df= df.merge(df2, on = 'CAT', how = 'left')
df['Value'] = df[['Value_x', 'Value_y']].apply(lambda x: np.where(df['Value_y'].isna(), df['Value_x'], df['Value_y'])).drop(columns = ['Value_y'])
df.drop(columns = ['Value_x', 'Value_y'])
输出:
CAT Value
0 A 12.0
1 B 34.0
2 C 22.0
3 D 43.0
4 E 21.0
5 F 99.0
CAT Value
0 A 12.0
1 B 34.0
2 C 22.0
3 D 43.0
4 E 21.0
5 F 99.0