当前位置: 首页 > 面试题库 >

如何使用pyarrow将Pandas数据帧设置/获取到Redis

赫连淳
2023-03-14
问题内容

使用

dd = {'ID': ['H576','H577','H578','H600', 'H700'],
      'CD': ['AAAAAAA', 'BBBBB', 'CCCCCC','DDDDDD', 'EEEEEEE']}
df = pd.DataFrame(dd)

在Pandas 0.25之前,此方法适用。

set:  redisConn.set("key", df.to_msgpack(compress='zlib'))
get:  pd.read_msgpack(redisConn.get("key"))

现在,已弃用警告。

FutureWarning: to_msgpack is deprecated and will be removed in a future version.
It is recommended to use pyarrow for on-the-wire transmission of pandas objects.

The read_msgpack is deprecated and will be removed in a future version.
It is recommended to use pyarrow for on-the-wire transmission of pandas objects.

骨髓如何运作?而且,我如何使pyarrow对象进出Redis。


问题答案:

这是一个使用pyarrow序列化熊猫数据帧以存储在Redis中的完整示例

apt-get install python3 python3-pip redis-server
pip3 install pandas pyarrow redis

然后在python中

import pandas as pd
import pyarrow as pa
import redis

df=pd.DataFrame({'A':[1,2,3]})
r = redis.Redis(host='localhost', port=6379, db=0)

context = pa.default_serialization_context()
r.set("key", context.serialize(df).to_buffer().to_pybytes())
context.deserialize(r.get("key"))
   A
0  1
1  2
2  3

我刚刚向熊猫提交了PR 28494,以便在文档中包含这个pyarrow示例。



 类似资料:
  • 现在,每次运行脚本时,我都会导入一个相当大的作为数据帧。有没有一个好的解决方案可以让数据帧在运行之间不断可用,这样我就不用花那么多时间等待脚本运行了?

  • 问题内容: 我有一个我希望导出到CSV文件的文件。但是,pandas似乎将某些值而不是类型写为。我找不到如何更改此行为。 建立数据框: 查看: 导出它: 为什么十位数有一个零点? 当然,我可以将此函数粘贴到管道中以重新转换整个CSV文件,但似乎没有必要: 问题答案: 我正在寻找的答案与@Jeff在答案中提出的内容略有不同。功劳归于他。最终解决了我的问题,以供参考:

  • 问题内容: 我正在处理熊猫和Spark数据帧。数据帧始终很大(> 20 GB),而标准的火花功能不足以容纳这些大小。目前,我将我的pandas数据框转换为spark数据框,如下所示: 我进行这种转换是因为通过火花将数据帧写入hdfs非常容易: 但是,对于大于2 GB的数据帧,转换失败。如果将spark数据框转换为熊猫,则可以使用pyarrow: 这是从Spark到Panda的快速对话,它也适用于大

  • 我有一个脚本可以将一整串CSV输出到文件夹C:\scripts\csv。这个特定的脚本循环了所有的数据流,并计算了数据集中前100个单词的使用情况。前100个单词及其计数被添加到一个列表中,数据流被串联,然后csv应该导出。打印包含正确的信息,但脚本不输出任何文件。

  • 怎么办? **添加详细示例如下***

  • 我有一个熊猫,如下所示: 我想按进行分组并获取每个组的第一行: 预期成果: 我尝试了下面的方法,它只给出了< code>DataFrame的第一行。任何关于这方面的帮助都将不胜感激。