如何解析... dict的字典列表到数据帧?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解析... dict的字典列表到数据帧?相关的知识,希望对你有一定的参考价值。
我有一个字典词典列表......基本上,它只是JSON的一大块。这里看起来像一个列表中的一个字典:
{'id': 391257, 'from_id': -1, 'owner_id': -1, 'date': 1554998414, 'marked_as_ads': 0, 'post_type': 'post', 'text': 'Весна — время обновлений. Очищаем балконы от старых лыж и API от устаревших версий: уже скоро запросы к API c версией ниже 5.0 перестанут поддерживаться.
Ожидаемая дата изменений: 15 мая 2019 года.
Подробности в Roadmap: https://vk.com/dev/version_update_2.0', 'post_source': {'type': 'vk'}, 'comments': {'count': 91, 'can_post': 1, 'groups_can_post': True}, 'likes': {'count': 182, 'user_likes': 0, 'can_like': 1, 'can_publish': 1}, 'reposts': {'count': 10, 'user_reposted': 0}, 'views': {'count': 63997}, 'is_favorite': False}
我想将每个字典转储到框架上。如果我这样做
data = pandas.DataFrame(list_of_dicts)
我得到的框架只有两列:第一列包含键,另一列包含数据,如下所示:
我试着在循环中做到这一点:
for i in list_of_dicts:
tmp = pandas.DataFrame().from_dict(i)
data = pandas.concat([data, tmp])
print(i)
但我面对ValueError:
Traceback (most recent call last):
File "/home/keddad/PycharmProjects/vk_group_parse/Data Grabber.py", line 68, in <module>
main()
File "/home/keddad/PycharmProjects/vk_group_parse/Data Grabber.py", line 61, in main
tmp = pandas.DataFrame().from_dict(i)
File "/home/keddad/anaconda3/envs/vk_group_parse/lib/python3.7/site-packages/pandas/core/frame.py", line 1138, in from_dict
return cls(data, index=index, columns=columns, dtype=dtype)
File "/home/keddad/anaconda3/envs/vk_group_parse/lib/python3.7/site-packages/pandas/core/frame.py", line 392, in __init__
mgr = init_dict(data, index, columns, dtype=dtype)
File "/home/keddad/anaconda3/envs/vk_group_parse/lib/python3.7/site-packages/pandas/core/internals/construction.py", line 212, in init_dict
return arrays_to_mgr(arrays, data_names, index, columns, dtype=dtype)
File "/home/keddad/anaconda3/envs/vk_group_parse/lib/python3.7/site-packages/pandas/core/internals/construction.py", line 51, in arrays_to_mgr
index = extract_index(arrays)
File "/home/keddad/anaconda3/envs/vk_group_parse/lib/python3.7/site-packages/pandas/core/internals/construction.py", line 320, in extract_index
raise ValueError('Mixing dicts with non-Series may lead to '
ValueError: Mixing dicts with non-Series may lead to ambiguous ordering.
在此之后,我可以用一个帖子(列表中的一个字典是一个帖子)获取数据帧,并将其中的所有数据作为列?
答案
我无法确切地弄清楚df
,但我认为你只需要做一个reset_index
和当前(似乎)的所有数据:
df.reset_index(inplace=True)
另外一件事,如果你想要keys
作为列:
df = pd.Dataframe.from_dict(orient='columns')
# or try `index` in columns if you don't get desired results
在for循环中:
l = []
for i in dict.keys:
l.append(pd.DataFrame.from_dict(dict[i], orient='columns'))
df = pd.concat(l)
另一答案
不太确定你想要做什么,但你的意思是这样吗?
您只需打印数据帧即可查看数据内部。或者您可以通过以下代码打印每一个。
data = pandas.DataFrame(list_of_dicts)
print(data)
for i in data.loc[:, data.columns]:
print(data[i])
以上是关于如何解析... dict的字典列表到数据帧?的主要内容,如果未能解决你的问题,请参考以下文章