web-dev-qa-db-ja.com

pandas.DataFrameをRedisに設定/取得する方法は?

DataFrameをredisに設定してから取得すると、redisは文字列を返します。このstrをDataFrameに変換する方法がわかりません。

これら2つを適切に実行するにはどうすればよいですか?

20
Alex Luya

セットする:

redisConn.set("key", df.to_msgpack(compress='zlib'))

取得する:

pd.read_msgpack(redisConn.get("key"))
37
Alex Luya

データフレームにDecimalオブジェクトがあるため、msgpackを使用できませんでした。代わりに、データフレームdfとredisのローカルインスタンスを想定して、pickleとzlibを次のように組み合わせました。

import pickle
import redis
import zlib

EXPIRATION_SECONDS = 600

r = redis.StrictRedis(Host='localhost', port=6379, db=0)

# Set
r.setex("key", EXPIRATION_SECONDS, zlib.compress( pickle.dumps(df)))

# Get
rehydrated_df = pickle.loads(zlib.decompress(r.get("key")))

これに固有のデータフレームは何もありません。

警告

  • msgpackを使用した他の回答の方が優れています-うまくいく場合はそれを使用してください
  • ピクリングは危険な場合があります-Redisサーバーは安全である必要があります。そうでない場合、問題が発生します
2
Mark Chackerian