How to set/get pandas.DataFrame to/from Redis?

后端 未结 4 867
孤城傲影
孤城傲影 2020-12-23 14:38

After setting a DataFrame to redis, then getting it back, redis returns a string and I can\'t figure out a way to convert this str to a DataFrame.

How can I do these

4条回答
  •  青春惊慌失措
    2020-12-23 15:03

    I couldn't use msgpack because of Decimal objects in my dataframe. Instead I combined pickle and zlib together like this, assuming a dataframe df and a local instance of Redis:

    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")))
    

    There isn't anything dataframe specific about this.

    Caveats

    • the other answer using msgpack is better -- use it if it works for you
    • pickling can be dangerous -- your Redis server needs to be secure or you're asking for trouble

提交回复
热议问题