2015-12-17 2 views
2

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

Первоначально я создал dataframes из файлов 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,... 

Я читал документацию по номеру merging and joining. Это, кажется, правильно объединить и привести в нужное число столбцов:

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, и т.д.?

+0

Вы можете использовать опцию 'suffixes', чтобы они назывались' spend_presents' и т. Д. Будет ли это работать? В противном случае используйте функцию «rename». – itzy

+0

@itzy да, спасибо! пожалуйста, отправьте в качестве ответа, и я соглашусь! – Richard

ответ

2

Опция suffixes в функции слияния делает это. defaults: suffixes=('_x', '_y').

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

1

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

ad.columns = ['org', 'name', 'presents_spend', 'trees_spend'] 
Смежные вопросы