Python 如何重复查询API并将每个JSON响应附加到数据帧?
我正试图从EPA的空气质量API中收集多年的数据。API每年返回一个JSON文件,我想将其转换为一个数据帧,最终将随后的每一年附加到同一个数据帧。这是我的密码:Python 如何重复查询API并将每个JSON响应附加到数据帧?,python,json,pandas,api,dataframe,Python,Json,Pandas,Api,Dataframe,我正试图从EPA的空气质量API中收集多年的数据。API每年返回一个JSON文件,我想将其转换为一个数据帧,最终将随后的每一年附加到同一个数据帧。这是我的密码: pd.set_option('display.max_columns', 60) i = 1999 for i in range(1999, 2020): parameters = { "email": "patrick.debiasse@gmail.com", "key": "khakih
pd.set_option('display.max_columns', 60)
i = 1999
for i in range(1999, 2020):
parameters = {
"email": "patrick.debiasse@gmail.com",
"key": "khakihawk63",
"param": "81104,44201,42602,42101,42401",
"bdate": str(i) + "1201",
"edate": str(i) + "1202",
"state": "49",
"county": "035",
"site": "3006"
}
#requesting the JSON data
json_data = requests.get("https://aqs.epa.gov/data/api/annualData/bySite email=test@aqs.api&key=test¶m=44201&bdate=20170618&edate=20170618&state=37&county=183&site=0014", params=parameters).json()
#converting to dataframe
df = pd.DataFrame((json_data['Data']))
#appending the converted data to a separate dataframe which will ultimately contain all the years' data
df2 = df.append(df)
i + 1
df2
当我运行上述代码时,我只在“df2”数据框中看到上一年(2019年)的数据,它似乎包含了两次(2019年数据附加到2019年数据)。我是不是犯了一些新手的循环错误?没有正确附加数据?还有什么我没有考虑的?非常感谢您的帮助 您当前在每个循环中将数据帧附加到自身,并将其分配给df2变量 相反,请尝试以下方法:
for i in range(1999, 2020):
...
#converting to dataframe
df = pd.DataFrame((json_data['Data']))
#appending the converted data to a separate dataframe which will ultimately contain all the years' data
if i == 1999:
result = df
else:
result = result.append(df)
我也不明白为什么在for循环的末尾有语句I+1
。for循环本身负责增加计数器,您不需要这样做。如果您想跳过一年,可以使用range(1999、2020、2)
。
另外,编写
i
的方式不会增加,您需要编写i+=1
谢谢你,托马斯。这是有帮助的,但是“结果”数据框只有1999年的数据…是什么造成的?我的错。它应该是result=result.append(df)