2016-06-21 14 views
8

Nachdem ich DatFrame auf redis gesetzt habe, bekomme ich von redis wieder, gibt redis eine Zeichenfolge zurück, und ich kann keinen Weg finden, diese str zu DataFrame zu konvertieren, also wie man diese beiden passend macht? Danke.Wie setze ich pandas.DataFrame zu/from redis?

+0

Verwenden Sie die Serialisierung vor Redis und Deserialisierung, wenn von Redis gelesen. –

Antwort

21

Satz:

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

get:

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

ich nicht msgpack wegen Decimal Objekte in meinem Datenrahmen nutzen könnte. Intead I kombiniert Gurke und zlib wie folgt zusammen einen Datenrahmen df und eine lokale Instanz redis Annahme:

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

Es gibt nichts, etwas Datenrahmen spezifisch darüber.

Caveats

  • die andere Antwort mit msgpack besser ist - es verwenden, wenn es für Sie
  • Beizen arbeitet, kann gefährlich sein - Ihr Redis Server sicher sein muss, oder Sie fragen Für Probleme