如何将 pandas 数据帧发送到 flask_restful api?

How to send a pandas dataframe to a flask_restful api?

现在我一次发送一个项目到 flask_restful api,并将结果附加到数据框。

如果 api 可以处理整个数据帧而不是逐行处理,那么 api 会快得多。

这可能吗?

这是我正在做的事情的一个非常基本的模型。

这个api取人名,returns一句话:“你的名字是……”

from flask import Flask
from flask_restful import Resource, Api, reqparse

app = Flask(__name__)
api = Api(app)

class my_api(Resource):


    def __init__(self):
        self.reqparse = reqparse.RequestParser()
        self.reqparse.add_argument('name', type = str, default='')
        
        super(my_api, self).__init__()

    def get(self):

        args = self.reqparse.parse_args()
        name =  args['name']
        
        return f'Your name is {name}'

api.add_resource(my_api, '/')

if __name__ == '__main__':
    app.run(debug=True)

现在我将在我的数据框上使用 api:

df = pd.DataFrame({'name':['John','Jim','Mary','Michael']})
print(df)

      name
0     John
1      Jim
2     Mary
3  Michael


# list to save api results
results = []

# send each name in the column to the api
for name in df['name']:

    # api call
    api_data = send name to api
    
    results.append(api_data)

# attach results to dataframe
df['results'] = results

因此,按照我的实际烧瓶 api 的设置方式,如果我获得完整的数据帧而不是逐行获取,速度会快得多。此外,数据框比上面的模型更大。还有更多的列和行。

有什么建议吗?

您可以将数据帧转换为 JSON 并将其发送到 API。您必须配置 API 以接受解析 JSON。这样您就可以一次发送完整的数据。同样使用 snake_case 作为 class 名称不是 recommended