将字典转换为 pandas 数据框?

Convert dict to pandas dataframe?

我有以下字典玩具示例:

d = {"id":666,"dp":[{"Value":"11","Key":"abc"},
{"Value":"88","Key":"kuku"},
{"Value":"99","Key":"lulu"},
{"Value":"John","Key":"name"}]}

我想将其转换为以下数据框:

id  key  value  
666 abc  11
666 kuku 88
666 lulu 99
666 name John

import pandas as pd

我曾尝试使用 pd.DataFrame.from_dict(d),但我收到的是 id --> dp 指令。

请指教,有没有什么快速method/best攻击这种格式的做法? 我知道我可以通过几个步骤完成(创建 id 列并将其添加到键值对中。

您可以使用 json_normalize,但重复值在最后一列中:

df = pd.json_normalize(d, 'dp', 'id')
print(df)
  Value   Key   id
0    11   abc  666
1    88  kuku  666
2    99  lulu  666
3  John  name  666

为了正确排序使用:

#create list of columns dynamic - all columns names without dp
cols = [c for c in d.keys() if c != 'dp']
print(cols)
['id']

df = pd.json_normalize(d, 'dp', 'id')
#change ordering by joined lists
df = df[cols + df.columns.difference(cols, sort=False).tolist()]
print(df)
    id Value   Key
0  666    11   abc
1  666    88  kuku
2  666    99  lulu
3  666  John  name

你也可以试试:

df = pd.DataFrame(d)
df[['Value','Key']]=df.dp.apply(pd.Series)
df = df.drop('dp', axis=1)