Я не знаю об автоматическом способе сделать это, но это, кажется, работает:
Этот метод 'выравнивает словарь (извлекает все внутренние словари)
def flatten_dict(d):
flat = []
for k,v in d.items():
if (isinstance(v,dict)):
flat.extend(flatten_dict(v))
else:
flat.append((k,v))
return flat
Тогда выможете использовать это для генерации ряда (из dict
) и преобразования его в кадр данных, который вы показываете в своем OP:
pd.DataFrame(pd.Series({a:b for a,b in flatten_dict(data)})).transpose()
(где data
- ваш оригинальный вложенный словарь)
Вывод, который я получил:
state username ppid pct start_time cmdline pgid name size bytes share pid
0 running abc 624 0.0008 2019-03-14 acde 0 xct 3608576 28897280 0 696
Обратите внимание, что pct
появляется дважды, и это приводит к тому, что один из них перезаписывает другой - вы можете преодолеть это, не преобразовав окончательный вывод метода (список кортежей) в словарь - ваш короткий пост недостаточно конкретен, чтобы точно понять, что вы хотите на этом уровне детализации.
Пожалуйста, дайте мне знать, если что-то не понятно или не работает какожидается.