2016-06-21 16 views
8

Po ustawieniu DatFrame na redis, a następnie od niego, redis zwraca ciąg, i nie mogę wymyślić sposób przekonwertowania tego str do DataFrame, więc jak zrobić te dwa odpowiednio? Dzięki.Jak ustawić/uzyskać pandas.DataFrame do/z redis?

+0

użyć serializacji przed wprowadzeniem do Redis i deserializacji podczas czytania z Redis. –

Odpowiedz

21

zestaw:

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

get:

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

nie mogłem użyć msgpack powodu Decimal obiektów w moim dataframe. Intead I połączeniu marynatę i zlib razem tak, zakładając dataframe df i lokalną instancję 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"))) 

nie ma nic nic dataframe specyficzny ten temat.

Ostrzeżenia

  • druga odpowiedź za pomocą msgpack jest lepiej - użyj go, jeśli to działa dla Ciebie
  • wytrawiania może być niebezpieczne - serwer Redis musi być bezpieczny lub prosisz dla kłopotów