我有以下字典:
{
'process':{
'state':'running',
'username':'abc',
'ppid':624,
'cpu':{
'total':{
'pct':0.0
},
'start_time':'2019-03-14'
},
'cmdline':'acde',
'pgid':0,
'name':'xct',
'memory':{
'size':3608576,
'rss':{
'bytes':28897280,
'pct':0.0008
},
'share':0
},
'pid':696
}
}
希望看到:
state username ppid pct start_time cmdline pgid name size bytes pct share pid
running abc 624 0 03/14/2019 acde 0 xct 3608576 28897280 0.0008 0 696
请注意,我已经忽略了这些:
process
cpu
total
rss
因为它们是数据字典(我从那里获取值,所以我不在乎并且可以忽略)
答案 0 :(得分:0)
我不知道自动执行此操作的方法,但这似乎可行:
此方法可以“平整”字典(提取所有内部字典)
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
出现了两次,并导致其中一个覆盖了另一个-您可以通过不将方法的最终输出(元组列表)转换为字典来克服这一问题-您的简称帖子不够具体,不足以在此级别的细节上确切了解您想要什么。
请让我知道是否不清楚或无法正常工作。