用另一个datafram的值替换一个dataframe中的列值

2024-05-17 19:43:25 发布

您现在位置: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

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

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

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


Tags: 数据dategroupfamilyhoteldf1jndf2
3条回答

只要使用pandas连接,就可以参考详细链接:http://pandas.pydata.org/pandas-docs/stable/merging.html

df1.join(df2,on='Group')

您还可以创建字典并使用apply:

hotel_dict = df2.set_index('Group').to_dict()
df1['Group'] = df1['Group'].apply(lambda x: hotel_dict[x])

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

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

相关问题 更多 >