[英]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)
这就是我得到的。
我正在寻求帮助,我找到了这个,但问题是列表没有 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.