繁体   English   中英

从嵌套字典对象列表创建 DataFrame

[英]Create DataFrame from a list of nested dictionary objects

我在 JSON 文件中有嵌套字典对象的列表。 我正在尝试创建此文件的 DataFrame。

这是前两个对象:

data= [ {
    "model": "class",
    "pk": 48,
    "fields": {
        "unique_key": "9f030ed1d5e56523",
        "name": "john",
        "follower_count": 2395,
        "profile_image": "  "
}  }  ,{ 
    "model": "class",
    "pk": 49,
    "fields": {
        "unique_key": "0e8256ad7f27270eb",
        "name": "dais",
        "follower_count": 264,
        "profile_image": "   "
} }, .....]

如果我尝试类似的事情:

df = pd.DataFrame(data)

这就是我得到的。

https://d.top4top.net/p_1132pfebn1.png

我正在寻求帮助,我找到了这个,但问题是列表没有 keys() 函数。

看起来这是您可以使用 for 循环展平的数据:

new_data = []

for item in data:
    new_entry = {}
    for k,v in item.items():
        # a dictionary will return True for isinstance(v, dict)
        if not isinstance(v, dict):
            # v is not a dictionary here
            new_entry[k] = v
        else:
            # v is a dictionary, so we flatten it
            for a,b in v.items():
                new_entry[a] = b

    new_data.append(new_entry)

df = pd.DataFrame(new_data)

内部循环是使用if k=='Fields'类的更通用的方法,它更适合您的问题

假设您只有 1 级嵌套字典并且您知道键名:

for d in data:
    d.update(d.pop('fields'))

您只需要“弹出”字典中的元素并在基本级别中添加内部键值数据。 update方法将后者作为一个就地操作。

现在您可以使用您期望的列创建您的 Pandas 数据框:

In [5]: pd.DataFrame(data)
Out[5]: 
   follower_count  model  name  pk profile_image         unique_key
0            2395  class  john  48                 9f030ed1d5e56523
1             264  class  dais  49                0e8256ad7f27270eb

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM