заменить значения столбцов в одном фрейме данных значениями другого фрейма данных
у меня есть два фрейма данных, первый имеет 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')