Как сделать объединение мультииндекса данных с другим мультииндексированным фреймворком?

Это должно идти дальше от следующего потока: Как сделать объединение мультииндекса данных с единым индексом данных?

Мультииндексы df1 являются индексами подуровня df2.

In [1]: import pandas as pd In [2]: import numpy as np In [3]: import itertools In [4]: inner = ('a','b') In [5]: outer = ((10,20), (1,2)) In [6]: cols = ('one','two','three','four') In [7]: sngl = pd.DataFrame(np.random.randn(2,4), index=inner, columns=cols) In [8]: index_tups = list(itertools.product(*(outer + (inner,)))) In [9]: index_mult = pd.MultiIndex.from_tuples(index_tups) In [10]: mult = pd.DataFrame(index=index_mult, columns=cols) In [11]: sngl Out[11]: one two three four a 2.946876 -0.751171 2.306766 0.323146 b 0.192558 0.928031 1.230475 -0.256739 In [12]: mult Out[12]: one two three four 10 1 a NaN NaN NaN NaN b NaN NaN NaN NaN 2 a NaN NaN NaN NaN b NaN NaN NaN NaN 20 1 a NaN NaN NaN NaN b NaN NaN NaN NaN 2 a NaN NaN NaN NaN b NaN NaN NaN NaN In [13]: mult.ix[(10,1)] = sngl In [14]: mult Out[14]: one two three four 10 1 a NaN NaN NaN NaN b NaN NaN NaN NaN 2 a NaN NaN NaN NaN b NaN NaN NaN NaN 20 1 a NaN NaN NaN NaN b NaN NaN NaN NaN 2 a NaN NaN NaN NaN b NaN NaN NaN NaN # the new dataframes sng2=pd.concat([sng1,sng1],keys=['X','Y']) mult2=pd.concat([mult,mult],keys=['X','Y']) In [110]: sng2 Out[110]: one two three four X a 0.206810 -1.056264 -0.572809 -0.314475 b 0.514873 -0.941380 0.132694 -0.682903 Y a 0.206810 -1.056264 -0.572809 -0.314475 b 0.514873 -0.941380 0.132694 -0.682903 In [121]: mult2 Out[121]: one two three four X 10 1 a NaN NaN NaN NaN b NaN NaN NaN NaN 2 a NaN NaN NaN NaN b NaN NaN NaN NaN 20 1 a NaN NaN NaN NaN b NaN NaN NaN NaN 2 a NaN NaN NaN NaN b NaN NaN NaN NaN Y 10 1 a NaN NaN NaN NaN b NaN NaN NaN NaN 2 a NaN NaN NaN NaN b NaN NaN NaN NaN 20 1 a NaN NaN NaN NaN b NaN NaN NaN NaN 2 a NaN NaN NaN NaN b NaN NaN NaN NaN 

код выше длинный, прокрутите прокрутку . Два многоуровневых индекса sng2 разделяют 1-й и 4-й индексы mul2. ('X', 'a'), например.

@DSM предложила решение для работы с multiindex df2 и единственным индексом df1

 mult[:] = sngl.loc[mult.index.get_level_values(2)].values 

BUt DataFrame.index.get_level_values ​​(2) может работать только для одного уровня индекса.

One Solution collect form web for “Как сделать объединение мультииндекса данных с другим мультииндексированным фреймворком?”

Непонятно, из вопроса, какой уровень индексов разделяет кадры данных. Я думаю, вам нужно пересмотреть код настройки, поскольку он дает ошибку при определении sngl . В любом случае, предположим, что mult разделяет первый и второй уровни с помощью sngl вы можете просто отказаться от второго уровня из индекса mult и index в:

 mult[:] = sngl.loc[mult.index.droplevel(2)].values 

С другой стороны, вы можете построить мультииндекс из продукта напрямую, используя pd.MultiIndex.from_product а не используя itertools

  • Может ли Pandas работать в Google App Engine для Python?
  • реализация функции шкалы R в пандах в Python?
  • Эффективное применение функции к сгруппированным пандам DataFrame параллельно
  • Преобразовать панды «Серия парных массивов» в «двухколонный DataFrame»?
  • Scatter plotting pandas DataFrame с категорически помеченными строками / столбцами
  • pandas read_csv column dtype устанавливается в десятичное число, но преобразуется в строку
  • Как эффективно перестроить таблицу pandas hdfstore при добавлении сбоя
  • Как я могу построить фрейм данных с датой в качестве имени столбца и времени в виде строки?
  • Загрузка данных из Yahoo! Финансы с пандами
  • Вставить строку в базу данных pandas
  • pandas применить фильтр для булевых типов
  • Python - лучший язык программирования в мире.