这是API输出:
{
"resultLength":133710,
"resultList" : [
{
"date" : 1510872659568,
"requestParameters" : [
"datesAsStringsFormat=dd-MMM-yyyy",
"datesAsStrings=true",
"outputFormat=xlsx",
"requestId=14e7aa1f-680f-49d0-8e76-cfd797b9b6b6"
],
"score" : 1,
"totalRequestTime" : 1261,
"userId" : 167895
},
{
"date" : 1510872659679,
"requestParameters" : [
"datesAsStringsFormat=dd-MMM-yyyy",
"datesAsStrings=true",
"outputFormat=xlsx",
"requestId=14e7aa1f-680f-49d0-8e76-cfd797b9be78"
],
"score" : 1,
"totalRequestTime" : 1255,
"userId" : 452669
}
]
}
我正在尝试为每个userId提取requestId,但是由于某些原因我不能。这就是我所尝试的:
req = requests.get(url=url, auth=(user,password))
out = req.json()
results = out['resultList']
solr_df = pd.DataFrame()
for record in results:
requestId = pd.DataFrame(record['requestParameters'][3],columns=['requestId'])
df = pd.DataFrame(requestId)
df['userId'] = record['userId']
solr_df = solr_df.append(df)
但是它抛出一个ValueError: DataFrame constructor not properly called!
你能帮忙改正错误吗?你知道吗
如果只提取每个requestParameter的requestId行太困难,那么您可以在for语句运行后帮助删除所有与requestId不相关的行吗?你知道吗
编辑:
当我为record['requestParameters']
运行它时,它成功地运行了,但是它提取了每个用户id的所有requestParameters行。你知道吗
我只是尝试了这样的切片:portfolioId = pd.DataFrame(record['requestParameters'][-1:0])
和它确实返回了结果(与单个索引调用不同),但是它同时用于outputFormat和requestId行。
然后我尝试了portfolioId = pd.DataFrame(record['requestParameters'][1:2])
,它返回了requestId和datesAsString的结果。你知道吗
看起来requestParameters行的索引不一致(不确定为什么可能),是否仍有方法从列表中获取特定行?你知道吗
谢谢
要提取id,可以尝试以下操作:
输出:
或者,如果您只需要数值:
输出:
根据文件:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html
为什么不尝试在json编辑器在线(http://www.jsoneditoronline.org/)中解析json字符串呢?如果json字符串有效或无效,它可能会对您有所帮助。你知道吗
第12行(
"totalRequestTime" : 1261
)后缺少逗号。我想这可能是第一个问题。你知道吗相关问题 更多 >
编程相关推荐