2015-06-02 4 views
1

У меня есть следующие две dataframe структуры:Добавление столбца из dataframe с различной структурой

  roc_100 
      max     min 
industry Banks  Health Banks Health 
date 
2015-03-15 3456  456  345  567 
2015-03-16 6576  565  435  677 
2015-03-17 5478  657  245  123 

и:

  roc_100 
      max  min 
date 
2015-03-15 546  7856 
2015-03-16 677  456 
2015-03-17 3546  346 

Как можно видеть разницу между двумя dataframes является то, что нижний Безразлично У меня есть «индустрия». Но остальная структура структуры данных одинакова, т. Е. Она также имеет даты слева и сгруппирована по roc_100, под которой находится max и min.

Что мне нужно сделать, это добавить столбцы из нижней части данных в верхний блок данных и дать добавленным столбцам название отрасли, например: «benchmark». В результате dataframe должно быть следующим:

  roc_100 
      max        min 
industry Banks  Health Benchmark Banks Health Benchmark 
date 
2015-03-15 3456  456  546   345  567  7856 
2015-03-16 6576  565  677   435  677  456 
2015-03-17 5478  657  3546   245  123  346 

Я попытался с помощью добавления и присоединиться, но ни один из вариантов работает до сих пор, потому что один dataframe имеет «промышленность», а другой нет.

Edit:

мне удалось объединить их правильно с помощью:

industry_df = industry_df.merge(benchmark_df, how='inner', left_index=True, right_index=True) 

Единственная проблема сейчас в том, что вновь добавленные столбцы до сих пор не имеют «промышленность».

Это означает, что, если я просто хочу одной отрасли, например: здоровье, то я могу сделать:

print(industry_df['roc_100', 'max', 'Health']) 

Это работает, но если я хочу, чтобы напечатать все отрасли, включая вновь добавленные столбцы я могу» Это сделать. Если я пытаюсь:

print(industry_df['roc_100', 'max']) 

This выводит только недавно добавленных столбцов, потому что они являются единственными, которые не имеют в «индустрии». Есть ли способ дать этим вновь объединенным столбцам имя («промышленность»)?

+0

Ознакомьтесь с командой ['' merge''] (http://pandas.pydata.org/pandas-docs/stable/merging.html) - это невероятно универсально, и давайте выберем, какие столбцы объединяться на левый и правый, индексный или нет; также, что делать с объединенными столбцами. –

+0

Спасибо @AmiTavory Мне удалось слить их правильно, но столкнулся с проблемой. См. Мое редактирование исходного вопроса. Спасибо. – darkpool

+0

В общем, как только у вас есть DataFrame '' df'' в нужной форме, все хорошо. '' df.columns'' - это просто обычный список Python, и вы можете переименовать столбцы любым способом. Список кортежей делает его многоуровневым. –

ответ

0

Вы можете использовать stack() и unstack(), чтобы привести два файла данных к одинаковым структурам индексов с отраслями как столбцы. Затем назначьте новую контрольную колонку. Последний шаг - восстановить исходный индекс/структуру столбца с помощью одного и того же стека() и unstack().

Смежные вопросы