将字典转换为 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)
我有以下字典玩具示例:
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)