如何将这些数据框与熊猫合并?

时间:2019-05-08 16:57:30

标签: python pandas api python-requests

我必须对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多行数据。

2 个答案:

答案 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)