python - 将字典的结果转换为数据框
问题描述
从这个命令
from stackapi import StackAPI
lst = ['11786778','12370060']
df = pd.DataFrame(lst)
SITE = StackAPI('stackoverflow', key="xxxx")
results = []
for i in range(1,len(df)):
SITE.max_pages=10000000
SITE.page_size=100
post = SITE.fetch('/users/{ids}/reputation-history', ids=lst[i])
results.append(post)
结果变量打印json格式的结果如何将结果变量转换为具有五列的数据框?
声誉历史类型、声誉变化、post_id、creation_date、user_id
解决方案
在这里试试这个:
from stackapi import StackAPI
import pandas as pd
lst = ['11786778','12370060']
SITE = StackAPI('stackoverflow')
results = []
SITE.max_pages=10000000
SITE.page_size=100
for i in lst:
post = SITE.fetch('/users/{ids}/reputation-history', ids=[i]).get('items')
results.extend([list(j.values()) for j in post])
df = pd.DataFrame(results, columns = ['reputation_history_type', 'reputation_change', 'post_id', 'creation_date', 'user_id'])
输出:
print(df.head())
给出:
reputation_history_type reputation_change post_id creation_date user_id
0 asker_accepts_answer 2 59126012 1575207944 11786778.0
1 post_undownvoted 2 59118819 1575139301 11786778.0
2 post_upvoted 10 59118819 1575139301 11786778.0
3 post_downvoted -2 59118819 1575139299 11786778.0
4 post_upvoted 10 59110166 1575094452 11786778.0
print(df.tail())
给出:
reputation_history_type reputation_change post_id creation_date user_id
170 post_upvoted 10 58906292 1574036540 12370060.0
171 answer_accepted 15 58896536 1573990105 12370060.0
172 post_upvoted 10 58896044 1573972834 12370060.0
173 post_downvoted 0 58896299 1573948372 12370060.0
174 post_downvoted 0 58896158 1573947435 12370060.0
注意:
- 您可以直接从结果中创建一个数据框,该结果将是列表列表。
- 您无需声明
SITE.max_page
,并且SIZE.page_size
每次循环遍历lst
.
推荐阅读
- php - php mysql查询最后加引号
- performance - Cognos 中的条件格式和性能
- angular - 用于路由的 Angular 7 写作测试
- reporting-services - 添加“maxRequestLenght”参数会导致 SSRS 2016 中的内部服务器错误
- java - 当页面左右滚动时,如何在 Selenium 中捕获整个屏幕
- python - 有没有办法在使用 pyinstaller 创建 exe 后录制视频
- security - 在 Wildfly 10 中配置 HTTP 标头
- c# - 在 c# linq 中过滤基于角色的用户
- jmeter - 使用 JMeter 工具对 Dynamics CRM 进行性能测试
- python - 读取特定块熊猫/不读取熊猫中的所有块