Вложенный словарь в фрейм данных с сохранением ключа словаря в виде столбца вместо индекса - PullRequest
0 голосов
/ 19 ноября 2018

Словарь имеет следующий формат:

{1:{'3450':0.235, '4380':0.47823},11:{'0430':0.128912,'0986':0.6267},14:{'8060':0.218912,'1234':0.6238}}

Могу ли я создать кадр данных, как показано

   chapter name  value
 0    1    3450  0.235
 1    1    4380  0.478
 2    11   0430  0.128912
 3    11   0986  0.6267
 4    14   8060  0.218912
 5    14   1234  0.6238

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

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Или вручную:

df=pd.DataFrame(d).reset_index()
df['value']=df.pop(1).fillna(df.pop(11)).fillna(df.pop(14))
df['chapter']=sorted(list(d.keys())*2)
df.columns=['name','value','chapter']

Тогда сейчас:

print(df)

Является:

   name     value  chapter
0  0430  0.128912        1
1  0986  0.626700        1
2  1234  0.623800       11
3  3450  0.235000       11
4  4380  0.478230       14
5  8060  0.218912       14

Чтобы изменить порядок столбцов:

df=df[['chapter','name','value']]
0 голосов
/ 19 ноября 2018

Использование stack

df=pd.DataFrame(d).stack().reset_index()
df.columns=['name','chapter','value']
df
Out[113]: 
   name  chapter     value
0  0430       11  0.128912
1  0986       11  0.626700
2  1234       14  0.623800
3  3450        1  0.235000
4  4380        1  0.478230
5  8060       14  0.218912
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...