У меня есть следующие две 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 выводит только недавно добавленных столбцов, потому что они являются единственными, которые не имеют в «индустрии». Есть ли способ дать этим вновь объединенным столбцам имя («промышленность»)?
Ознакомьтесь с командой ['' merge''] (http://pandas.pydata.org/pandas-docs/stable/merging.html) - это невероятно универсально, и давайте выберем, какие столбцы объединяться на левый и правый, индексный или нет; также, что делать с объединенными столбцами. –
Спасибо @AmiTavory Мне удалось слить их правильно, но столкнулся с проблемой. См. Мое редактирование исходного вопроса. Спасибо. – darkpool
В общем, как только у вас есть DataFrame '' df'' в нужной форме, все хорошо. '' df.columns'' - это просто обычный список Python, и вы можете переименовать столбцы любым способом. Список кортежей делает его многоуровневым. –