преобразовать словарь словарей, используя его ключ в качестве индекса в pandas - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть этот словарь словарей,

# dic
{ 1:
   { URL : "www.sample.com",
     elements: ["foo", "bar", .....]
   },
  2:
   { URL: "www. ..... "
     elements: ["hello", "world",...]
   }
}

, и я хочу преобразовать его в pandas dataframe.

df = pd.Dataframe([(k, k1, v1) for k, v in dic.item() for k1, v1 in v.items()], columns=['index', 'URL', 'elements'])

# it returns 
   index   URL             elements
0    1     URL          www.sample.com
1    1    elements      ["foo", "bar", .....]

Но я хочу к этому фрейму данных,

index      URL                   elements
  1       www.sample.com        ["foo", "bar", .....]
  2       www. .....            ["hello", "world",...]

Я чувствую, что я рядом, но не могу добиться большего прогресса. Кто-нибудь может указать, где я ошибся?

Ответы [ 2 ]

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

Просто вызовите метод pd.DataFrame() в своем словаре и транспонируйте его, используя .T так, как вы хотите.

Затем сбросьте индекс, используя reset_index:

In [1092]: df = pd.DataFrame(dic).T.reset_index()                                                                                                                                                             

In [1093]: df                                                                                                                                                                                               
Out[1093]: 
   index             URL        elements
0      1  www.sample.com      [foo, bar]
1      2     www. .....   [hello, world]
0 голосов
/ 16 апреля 2020

Вы можете использовать pandas встроенный метод pd.DataFrame.from_dict() и затем сбросить индекс.

Начиная со словаря:

di = { 1:
   { "URL" : "www.sample.com",
     "elements": ["foo", "bar"]
   },
  2:
   { "URL": "www. ..... ",
     "elements": ["hello", "world"]
   }
}

Использование from_dict() и reset_index() методы:

pd.DataFrame.from_dict(di, orient='index').reset_index()

Результаты:

   index             URL        elements
0      1  www.sample.com      [foo, bar]
1      2     www. .....   [hello, world]
...