gpt4 book ai didi

python - 如何在 RESTful Flask 应用程序中将 Pandas DataFrame 序列化/反序列化为 ProtoBuf/Gzip?

转载 作者:太空狗 更新时间:2023-10-29 19:28:34 25 4
gpt4 key购买 nike

我有一个 pandas dataframe 作为 Flask Response 对象返回到 flask 应用程序中。目前我正在将它转换为 JSON 对象

df = df.to_json()
return Response(df, status=200, mimetype='application/json')

dataframe 的大小确实非常大,可能是 5000000 X 10。在客户端,当我将其反序列化为时,

df = response.read_json()

随着我的URL 请求参数 数量的增长,dataframe 也在增长。与序列化相比,反序列化时间以线性因子 的速度增长,这是我想避免的。例如:序列化需要 15-20 秒,反序列化需要 60-70 秒。

在这种情况下,protobuf 是否可以帮助将 pandas dataframe 转换为 protobuf 对象。还有一种方法可以通过 flask 将此 JSON 作为 Gunzipped mimetype 发送吗?我相信 protobufgunzip 之间的时间和效率相当。

在这种情况下最好的解决方案是什么?

提前致谢。

最佳答案

我最近遇到了同样的问题。我通过遍历 DataFrame 的行并使用 DataFrame 中的信息在该循环中调用 protobuf_obj.add() 来解决它。然后,您可以对序列化字符串输出进行 GZIP 压缩。

即类似的东西:

for _, row in df.iterrows():
protobuf_obj.add(val1=row[col1], val2=row[col2])
proto_str = protobuf_obj.SerializeToString()
return gzip.compress(proto_str)

鉴于这个问题在 9 个月内没有得到回答,我不确定是否有更好的解决方案,但如果有的话,我绝对乐于听取!

关于python - 如何在 RESTful Flask 应用程序中将 Pandas DataFrame 序列化/反序列化为 ProtoBuf/Gzip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38388001/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com