我有一个pandas dataframe
作为Flask Response
对象在一个flask
应用。目前我正在将其转换为JSON Object
,
df = df.to_json()
return Response(df, status=200, mimetype='application/json')
数据帧的大小确实非常巨大,可能有 5000000 X 10。
在客户端,当我将其反序列化为,
df = response.read_json()
正如我的数量URL request parameters
成长, 的dataframe
也会成长。反序列化时间增长linear factor
与我想避免的序列化相比。例如:Serialization
需要15-20秒,deserialization
需要 60-70 秒。
有没有办法protobuf
在这种情况下可以帮助将 pandas 数据帧转换为 protobuf 对象。还有一种方法可以发送这个JSON
as Gunzipped
通过烧瓶模仿类型?我相信两者之间的时间安排和效率具有可比性protobuf
and gunzip
.
在这种情况下最好的解决方案是什么?
提前致谢。
我最近遇到了同样的问题。我通过迭代 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 个月内还没有得到解答,我不确定是否有更好的解决方案,但如果有的话,我绝对愿意听取一个解决方案!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)