首页 > 解决方案 > 将多个 json 请求附加到一个数据帧

问题描述

我有多个具有相同信息但位于不同位置的 json 请求,这些请求由多边形区分。网址示例:www.dummy.com/whatever?type=fruit&polygon=1,1;2,2。我有大约 20 个相同fruit但不同的请求polygon

我的目标是在任何位置附加所有相同的水果。url 请求为 JSON 格式。

我创建了一个字典,其中存储了所有 URL,并以这种方式构建它们:

urlDict['fruit']+polygonsDict[coords]

字典看起来像这样:

urlDict = {
  'fruit': 'www.dummy.com/whatever?type=fruit&polygon=',
  'animal': 'www.dummy.com/whatever?type=animal&polygon=',
  'colour': 'www.dummy.com/whatever?type=colour&polygon='
}

polygonsDict = {
  0:'1,1;2,2',
  1:'3,3;4,4',
  2:'5,5;6,6'}

现在,我想遍历所有fruiturl 并将它们附加到数据框。由于响应是 JSON 格式,我想使用 python来explode扩展作为值的。dictDataFramelist

这是我的代码:

for idx, polygon in polygonsDict.items():
    url = urlDict['fruit']+polygonsDict[coords]
    print(url) #www.dummy.com/whatever?type=fruit&polygon=blahblah

    try :
        raw = req.get(url).json()

        fruits_raw = [raw] #convert the result to list

        fruits_df = pd.DataFrame(fruits_raw).explode('fieldname').reset_index(drop=True)
        print(fruits_df)

    except KeyError:
        print("No fruit in this location.")

该代码为每个多边形创建单独的数据框。我希望它附加并生成一个关于fruit不管polygon. 我怎样才能做到这一点?

标签: pythonpandaslistdataframe

解决方案


将我的评论形式化为答案。使用pandas.concat()您可以将 DataFrames 列表合并为一个。

import pandas as pd

frames = []
for idx, polygon in polygonsDict.items():
    url = urlDict['fruit']+polygonsDict[coords]
    print(url) #www.dummy.com/whatever?type=fruit&polygon=blahblah

    try :
        raw = req.get(url).json()

        fruits_raw = [raw] #convert the result to list

        fruits_df = pd.DataFrame(fruits_raw).explode('fieldname').reset_index(drop=True)
        print(fruits_df)

        # Add the frame to the list
        frames.append(fruits_df)

    except KeyError:
        print("No fruit in this location.")

# Combine the list of DataFrames into a single DataFrame
single = pd.concat(frames)
print(single)

推荐阅读