用另一个数据帧的值替换一个数据帧中的列值 [英] replace column values in one dataframe by values of another dataframe
问题描述
我有两个数据框,第一个有 1000 行,看起来像:
I have two dataframes, the first one has 1000 rows and looks like:
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 个唯一值.
The column Group
has different values, sometimes repeated, but in general about 50 unique values.
第二个数据框包含所有这 50 个唯一值(50 行)以及与这些值关联的酒店:
The second dataframe contains all these 50 unique values (50 rows) and also the hotels, that are associated to these values:
Group Hotel
tri23_1 Jamel
hsgç_T2 Frank
bbbj-1Y_jn Luxy
mlkl_781 Grand Hotel
vchs_94 Vancouver
我的目标是将第一个数据帧的 Group
列中的值替换为第二个数据帧的 Hotel
列的相应值/或创建列 Hotel
具有相应的值.当我试图通过像
My goal is to replace the value in the column Group
of the first dataframe by the corresponding values of the column Hotel
of the second dataframe/or create the column Hotel
with the corresponding values. When I try to make it just by assignment like
df1.loc[(df1.Group=df2.Group), 'Hotel']=df2.Hotel
我有一个错误,即数据帧的大小不同,因此无法进行比较.
I have an error that the dataframes are not of equal size, so the comparison is not possible.
推荐答案
如果您将索引设置为另一个 df 的 'Group' 列,那么您可以使用 map
在原始 df 'Group' 列上:
If you set the index to the 'Group' column on the other df then you can replace using map
on your original df 'Group' column:
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
这篇关于用另一个数据帧的值替换一个数据帧中的列值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!