2016-06-21 24 views
8

在将DatFrame设置为redis之后,从它获取,redis返回一个字符串,并且我无法找出将此str转换为DataFrame的方法,那么如何适当地执行这两个操作?谢谢。如何设置/从redis中获取pandas.DataFrame?

+0

在使用Redis之前使用序列化,从Redis读取时使用反序列化。 –

回答

21

集:

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

得到:

pd.read_msgpack(redisConn.get("key")) 
1

我不能使用msgpack因为在我的数据帧Decimal对象。这一翻译我结合咸菜和zlib这样在一起,假设数据帧df和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"))) 

有没有什么什么数据帧具体谈谈这一点。

注意事项

  • 使用msgpack对方的回答是更好的 - 使用它,如果你的作品
  • 酸洗可能是危险的 - 你的Redis服务器需要安全或你问麻烦