заменить значения столбцов в одном фрейме данных значениями другого фрейма данных
у меня есть два фрейма данных, первый имеет 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
у меня есть ошибка, что фреймы данных не имеют равного размера, поэтому сравнение невозможно
3 ответов
Если вы установите индекс в столбец "группа" на другом df, то вы можете заменить с помощью map в исходном столбце 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
вы также можете создать словарь и использовать apply:
hotel_dict = df2.set_index('Group').to_dict()
df1['Group'] = df1['Group'].apply(lambda x: hotel_dict[x])
просто используйте pandas join, вы можете обратиться к подробной ссылке:http://pandas.pydata.org/pandas-docs/stable/merging.html
df1.join(df2,on='Group')