我必须对API进行多次调用,并将每个调用的结果合并到单个数据框中。它们具有相同的键,我只能执行一次,但是当我尝试合并第三个键时,什么也没有发生。我可能也不是最有效的方法。
我最初尝试使用for循环来执行此操作,但是出于实验目的,我尝试手动完成操作(每次将参数更改5000)。通话限制为5000,所以我一次只能做这么多记录。我知道我的一些变量名可能对它们所代表的内容(例如“ JSONString等”)的描述不准确,但是请耐心等待。
我不会在下面的通话中包含该网址,但这是准确的。
#First call, gets the necessary values out of the API and successfully turns them into a dataframe
params = urllib.parse.urlencode({
# Request parameters
'limit': 5000,
})
categoriesJSON = s.get(url, headers=headers)
categoriesJSONString = categoriesJSON.json()
categoriesDf = pandas.DataFrame(categoriesJSONString['value'])
#Second call, gets the necessary values out of the API and successfully turns them into a dataframe and then appends that dataframe to the original dataframe successfully
params = urllib.parse.urlencode({
# Request parameters
'limit': 5000,
'offset': 5000
})
categoriesJSON = s.get(url, headers=headers)
categoriesJSONString = categoriesJSON.json()
newCategoriesDf = pandas.DataFrame(categoriesJSONString['value'])
categoriesDf.append(newCategoriesDf, ignore_index = True)
#Third, gets the necessary values out of the API and turns them into a dataframe and then appends that dataframe to the original dataframe unsuccessfully
params = urllib.parse.urlencode({
# Request parameters
'limit': 5000,
'offset': 10000
})
categoriesJSON = s.get(url, headers=headers)
categoriesJSONString = categoriesJSON.json()
newCategoriesDf = pandas.DataFrame(categoriesJSONString['value'])
categoriesDf.append(newCategoriesDf, ignore_index = True)
第二次调用后,我的数据帧长为10000行,但是第三次调用后,我的数据帧仍为10000行。是什么导致它不能长15000?我知道我要获取10000多行数据。
答案 0 :(得分:1)
df.append返回一个附加的DF,您需要将最后一行更改为:
categoriesDf = categoriesDf.append(newCategoriesDf, ignore_index = True)
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html
答案 1 :(得分:1)
Append返回一个新的数据框,现有的不更新。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html
只需更新目标
download = pd.DataFrame(data = 1, index = [1], columns = ['Data'])
x = download
x = x.append(download, ignore_index=True)
x = x.append(download, ignore_index=True)
x = x.append(download, ignore_index=True)