如何将包含嵌套列表的字典列表转换为pandas df

等等

我有一个字典列表:

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_pathmeta参数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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章