Вложенный словарь списков для данных - PullRequest
2 голосов
/ 15 апреля 2020

У меня есть словарь, подобный этому:

 {'a': {'col_1': [1, 2], 'col_2': ['a', 'b']},
 'b': {'col_1': [3, 4], 'col_2': ['c', 'd']}}

Когда я пытаюсь преобразовать это в массив данных, получаю это:

     col_1  col_2
a   [1, 2]  [a, b]
b   [3, 4]  [c, d]

Но мне нужно вот что:

     col_1  col_2
a      1      a
       2      b
b      3      c
       4      d

Как мне получить этот формат. Может быть, мне следует изменить формат ввода? Спасибо за помощь =)

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Вы можете использовать pd.DataFrame.from_dict для установки orient='index', чтобы ключи словаря устанавливались как индексы информационного кадра, а затем разбивать все столбцы, применяя pd.Series.explode:

pd.DataFrame.from_dict(d, orient='index').apply(pd.Series.explode)

  col_1 col_2
a     1     a
a     2     b
b     3     c
b     4     d
0 голосов
/ 15 апреля 2020

вы можете запустить генератор и применить pandas concat ... понимание работает со значениями словаря, которые сами являются словарями:

pd.concat(pd.DataFrame(entry).assign(key=key) for key,entry in data.items()).set_index('key')


    col_1   col_2
key     
a    1       a
a    2       b
b    3       c
b    4       d
...