Я хотел бы объединить два фрейма данных Pandas вместе и контролировать имена новых значений столбцов.

Я изначально создал кадры данных из файлов CSV. Исходные файлы CSV выглядели так:

   # presents.csv
   org,name,items,spend...
   12A,Clerkenwell,151,435,...
   12B,Liverpool Street,37,212,...
   ...
   # trees.csv
   org,name,items,spend...
   12A,Clerkenwell,0,0,...
   12B,Liverpool Street,2,92,...
   ...

Теперь у меня есть два фрейма данных:

df_presents = pd.read_csv(StringIO(presents_txt))
df_trees = pd.read_csv(StringIO(trees_txt))

Я хочу объединить их вместе, чтобы получить окончательный фрейм данных, объединяя значения org и name, а затем префикс всех остальных столбцов с соответствующим префиксом.

org,name,presents_items,presents_spend,trees_items,trees_spend...
12A,Clerkenwell,151,435,0,0,...
12B,Liverpool Street,37,212,2,92,...

Я читал документацию по объединению и присоединению. Похоже, что это правильно слить и привести к правильному количеству столбцов:

ad = pd.DataFrame.merge(df_presents, df_trees,
                        on=['practice', 'name'],
                        how='outer')

Но затем выполнение print list(aggregate_data.columns.values) показывает мне следующие столбцы:

[org', u'name', u'spend_x', u'spend_y', u'items_x', u'items_y'...]

Как я могу переименовать spend_x в presents_spend и т. Д.?

23
Richard 17 Дек 2015 в 18:34

3 ответа

Лучший ответ

Опция suffixes в функции слияния делает это. значения по умолчанию являются {{X1} } .

Как правило, переименование столбцов можно выполнить с помощью переименования метод.

24
itzy 17 Дек 2015 в 15:42

Другим способом является добавление суффикса к столбцам вашего фрейма данных перед слиянием:

ad.columns = 'ad_' + ad.columns.values
0
Amirkhm 28 Ноя 2019 в 21:11

Вы можете переименовать все столбцы ad , установив его columns следующим образом.

ad.columns = ['org', 'name', 'presents_spend', 'trees_spend']
5
Nguyen Ngoc Tuan 21 Дек 2015 в 16:14