Python Can';我不明白为什么在尝试将JSON值导入DF时出错
我一直在网上查看,但不明白为什么会出现错误,因为JSON中有可用的数据 我试图从JSON中提取“pull\u request\u contributors”值并将其放入DF中 我得到一个错误:Python Can';我不明白为什么在尝试将JSON值导入DF时出错,python,json,pandas,Python,Json,Pandas,我一直在网上查看,但不明白为什么会出现错误,因为JSON中有可用的数据 我试图从JSON中提取“pull\u request\u contributors”值并将其放入DF中 我得到一个错误: KeyError: "Try running with errors='ignore' as key 'pull_request_contributors' is not always present" 代码 cg = CoinGeckoAPI() ts = '01-01-2017' cs = 'bi
KeyError: "Try running with errors='ignore' as key 'pull_request_contributors' is not always present"
代码
cg = CoinGeckoAPI()
ts = '01-01-2017'
cs = 'bitcoin'
# get data
result = cg.get_coin_history_by_id(cs, ts)
#pull_request_contributors
df_pr = pd_json.json_normalize(data,
record_path='developer_data',
meta=['pull_request_contributors']).set_index(ts)
JSON
{'community_data': {'facebook_likes': 40055,
'reddit_accounts_active_48h': '4657.4',
'reddit_average_comments_48h': 186.5,
'reddit_average_posts_48h': 3.75,
'reddit_subscribers': 1014816,
'twitter_followers': 64099},
'developer_data': {'closed_issues': 3845,
'commit_count_4_weeks': 245,
'forks': 22024,
'pull_request_contributors': 564,
'pull_requests_merged': 6163,
'stars': 36987,
'subscribers': 3521,
'total_issues': 4478}...
期望值
date bitcoin
01-01-2017 564
由于字段pull_request_contributors在每个对象中都不可用,因此pandas无法构建数据帧。运行
df_pr=pd_json.json_normalize(数据,记录路径='developer\u data',元=['pull\u request\u contributors',错误='ignore')。设置索引(ts)
忽略缺少的字段
编辑
json_normalized创建一个表,其中所有字段都作为列,它们的值构成行。因此,对于您想要实现的目标,我不会使用json_normalize,因为您知道要读取哪个特定字段。我会这样做的
ts = '01-01-2017'
cs = 'bitcoin'
df_pr = pd_json.json_normalize(data['developer_data'])
df = pd.DataFrame(data=[{'date': ts,
cs: data['developer_data']['pull_request_contributors']}]).set_index('date')
通过这种方式,我们只需构造数据帧,而无需首先规范化响应
如果响应是字符串而不是dict,我不知道CoinGeckoAPI返回什么,可以先用
import json
data = json.loads(json_string)
希望这对我有所帮助给我这个df:0拉式请求贡献者0分叉NaN 1星NaN 2订户NaN 3总问题NaN 4关闭问题NaN 5拉式请求合并NaN 6拉式请求贡献者NaN 7提交计数4周NaN为什么必须在每个对象中都可用?对不起,我刚才坐在计算机上。我编辑了我的原始答案。如果有帮助,请告诉我