小编典典

用另一个数据框的值替换一个数据框的列值

python

我有两个数据框,第一个有1000行,看起来像:

Date            Group         Family       Bonus
2011-06-09      tri23_1       Laavin       456
2011-07-09      hsgç_T2       Grendy       679
2011-09-10      bbbj-1Y_jn    Fantol       431
2011-11-02      hsgç_T2       Gondow       569

该列Group具有不同的值,有时会重复,但通常大约有50个唯一值。

第二个数据框包含所有这50个唯一值(50行)以及与这些值关联的酒店:

Group             Hotel
tri23_1           Jamel
hsgç_T2           Frank
bbbj-1Y_jn        Luxy
mlkl_781          Grand Hotel
vchs_94           Vancouver

我的目标是用第二个数据帧的列的相应值替换Group第一个数据帧的列中的值,Hotel或者Hotel用相应的值创建该列。当我尝试通过像

df1.loc[(df1.Group=df2.Group), 'Hotel']=df2.Hotel

我有一个错误,即数据帧的大小不相等,因此无法进行比较


阅读 164

收藏
2020-12-20

共1个答案

小编典典

如果将索引设置为另一个df上的“组”列,则可以map在原始df的“组”列上使用替换:

In [36]:
df['Group'] = df['Group'].map(df1.set_index('Group')['Hotel'])
df

Out[36]:
         Date  Group  Family  Bonus
0  2011-06-09  Jamel  Laavin    456
1  2011-07-09  Frank  Grendy    679
2  2011-09-10   Luxy  Fantol    431
3  2011-11-02  Frank  Gondow    569
2020-12-20