2016-06-21 27 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服務器需要安全或你問麻煩