2015-11-01 3 views
2

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

Например, скажем, у меня есть:

index1 = pd.MultiIndex.from_tuples([('2010-01-01', 'Jim'), 
            ('2010-01-01', 'Mike'), 
            ('2010-01-02', 'Sam')]) 
index2 = pd.MultiIndex.from_tuples([('2010-01-02', 'Jim'), 
            ('2010-01-02', 'Sam'), 
            ('2010-01-03', 'Joe')]) 
df1 = pd.DataFrame([[7,0,7],[4,3,2],[6,2,6]], 
        index=index1, columns=['a', 'b', 'c']) 
df2 = pd.DataFrame([[4,2,0],[8,8,4],[5,5,3]], 
        index=index2, columns=['a', 'b', 'c']) 

Это приводит к:

>> df1 
        a b c 
2010-01-01 Jim 7 0 7 
      Mike 4 3 2 
2010-01-02 Sam 6 2 6 

>> df2 
        a b c 
2010-01-02 Jim 4 2 0 
      Sam 8 8 4 
2010-01-03 Joe 5 5 3 

Я хочу объединить df1 и df2 производить:

>> df3 
        a1 b1 c1 a2 b2 c2 
2010-01-01 Jim  7 0 7 NaN NaN NaN 
      Mike 4 3 2 NaN NaN NaN 
2010-01-02 Jim  NaN NaN NaN 4 2 0 
      Sam  6 2 6 8 8 4 
2010-01-03 Joe  NaN NaN NaN 5 5 3 

Я пытаясь найти хороший способ сделать это. Какие-либо предложения?

ответ

1

Try:

df3 = df1.join(df2, how='outer', lsuffix='1', rsuffix='2') 

Или

df3 = pd.merge(df1, df2, how='outer', left_index=True, right_index=True) 
+0

Первый оператор выдает ошибку ('ValueError: столбцы перекрываются, но не суффикс, указанный: Index ([ 'а', 'б',«C '], dtype =' object ') '), но второй работает! – elmoslide

+0

Измените первый, чтобы включить 'lsuffix = '1', rsuffix = '2''. Я наблюдал за этим. Также, примите мой ответ, если вы довольны этим. – Kartik

+0

Я нажал на зеленую галочку, когда написал свой первый комментарий. Есть что-то еще, что мне нужно сделать? – elmoslide

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