我有一个字典列表:
list_of_dicts = [{'name': 'a', 'counts': [{'dog': 2}]},
{'name': 'b', 'counts': [{'cat': 1}, {'capibara': 5}, {'whale': 10}]},
{'name': 'c', 'counts': [{'horse':1}, {'cat': 1}]]
我想将其转换为如下所示的pandas数据框:
名称 | 动物 | 频率 |
---|---|---|
一种 | 狗 | 2 |
b | 猫 | 1个 |
b | 卡皮巴拉 | 5 |
b | 鲸 | 10 |
C | 马 | 1个 |
C | 猫 | 1个 |
在当前代码中,我尝试对其进行规范化:
from pandas import json_normalize
df = json_normalize(list_of_dicts, 'counts')
但是我想我走错了方向。另外,如果我做一个simple df = pd.DataFrame(list_of_dicts)
,它会导致每个字典列表都是单个行值,这是不希望的。
record_path
和meta
参数pandas.json_normalize
必须使用。import pandas as pd
# test data
list_of_dicts = [{'name': 'a', 'counts': [{'dog': 2}]}, {'name': 'b', 'counts': [{'cat': 1}, {'capibara': 5}, {'whale': 10}]}, {'name': 'c', 'counts': [{'horse':1}, {'cat': 1}]}]
# load and transform the dataframe
pd.json_normalize(list_of_dicts, 'counts', 'name').set_index('name').stack().reset_index().rename(columns={'level_1': 'Animal', 0: 'Frequency'})
# display(df)
name Animal Frequency
0 a dog 2.0
1 b cat 1.0
2 b capibara 5.0
3 b whale 10.0
4 c horse 1.0
5 c cat 1.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句