2017-01-09 2 views
1

У меня есть два словаря словарей, как например:MultiIndexing два словаря, как панды DataFrame

d_old = {person1: {a1:aaa, b1:bbb, c1:ccc...}, person2:{...}, ...} 
d_new = {person1: {a1:AAA, b1:BBB, c1:CCC...}, person2:{...}, ...} 

Я хотел бы, чтобы выровнять их рядом друг с другом в панд DataFrame, используя иерархическое MultiIndexing, чтобы создать что-то вроде этого:

    d_old d_new 
person1 a1 aaa AAA 
      b1 bbb BBB 
      c1 ccc CCC 
person2 a1 ... 

Я новичок в панд, и в то время как я мог бы получить несколько индексирования работает для одного словаря, я в догадках с пытаясь выровнять эти два. Как это сделать?

... также, я не могу правильно форматировать приведенную выше таблицу, не стесняйтесь редактировать этот вопрос в более удобочитаемой форме, если знаете, как это сделать.

ответ

3

Вы можете использовать concat с unstack ред DataFrames:

d_old = {'person1': {'a1':'aaa', 'b1':'bbb', 'c1':'ccc'}, 
     'person2':{'a1':'cc', 'b1':'dd', 'c1':'ee'},} 
d_new = {'person1': {'a1':'AAA', 'b1':'BBB', 'c1':'CCC'}, 
     'person2':{'a1':'AAA', 'b1':'BBB', 'c1':'CCC'}} 

df1 = pd.DataFrame(d_old) 
df2 = pd.DataFrame(d_new) 
print(df1) 
print(df2) 

print (pd.concat([df1.unstack(), df2.unstack()], keys=['df_old','df_new'], axis=1)) 
      df_old df_new 
person1 a1 aaa AAA 
     b1 bbb BBB 
     c1 ccc CCC 
person2 a1  cc AAA 
     b1  dd BBB 
     c1  ee CCC 
Смежные вопросы