首页 > 解决方案 > 并行运行请求函数并在 pandas 数据框中返回结果

问题描述

我有以下功能,对于每个坐标系列,LONGITUDELATITUDE都会向服务发送请求。坐标来自df_uniqueLocs数据框,结果加载到df_Results数据框中。

输入 dfdf_uniqueLocs如下所示:

     LONGITUDE  LATITUDE
0   -157.87295  21.32611
1   -157.85596  21.30131
2   -157.84403  21.29628
3   -157.84045  21.29157
4   -157.77337  21.27747

输出 dfdf_Results如下所示:

     LONGITUDE  LATITUDE  layerId layerName   pixelVal
0   -157.87295  21.32611        4        ca        354
1   -157.85596  21.30131       18        us        734
2   -157.84403  21.29628        4        ca          5
3   -157.84045  21.29157        4        ca       3567
4   -157.77337  21.27747        5        za         56

这是我的功能:

def request_func(df_uniqueLocs, identifyUrl, payload, df_Results):
    for index, row in df_uniqueLocs.iterrows():
        x, y = row['LONGITUDE'], row['LATITUDE']
        #print(x,y)

        pointString = str(x) + ',' + str(y)
        payload["geometry"] = pointString
        payload['mapExtent'] = pointString + ',' + pointString

        data = urlencode(payload).encode("utf-8")

        request = Request(identifyUrl, data)
        identPost = urlopen(request)
        response = identPost.read()
        identPost.close()

        # load the response
        results = loads(response)['results']
        for res in results:
            layerId = str(res['layerId'])
            layerName = res['layerName']
            values = res['attributes']
            pixelVal = values['Pixel Value']
            df_Results.loc[len(df_Results)] = [x, y, layerId, layerName, pixelVal]
    return df_Results

如何让函数并行运行,然后将所有结果放回一个数据帧?

标签: pandasfunctionparallel-processingrequestpython-multiprocessing

解决方案


推荐阅读