Sto usando il driver Cassandra Python per connettersi e interrogare il nostro cluster Cassandra.Pandas e Cassandra: incompatibilità formato array numpy
voglio manipolare i miei dati tramite panda, c'è una zona nella documentazione per il driver Cassandra che cita esattamente questo: https://datastax.github.io/python-driver/api/cassandra/protocol.html
NumpyProtocolHander: deserializes results directly into NumPy arrays. This facilitates efficient integration with analysis toolkits such as Pandas.
Seguendo le istruzioni di cui sopra e facendo una query SELECT a Cassandra, posso vedere l'output (tramite la funzione type()) come:
<class 'cassandra.cluster.ResultSet'>
iterazione attraverso i risultati, questo che stampa una riga è riportato come:
{u'reversals_rejected': array([0, 0]), u'revenue': array([ 0, 10]), u'reversals_revenue': array([0, 0]), u'rejected': array([3, 1]), u'impressions_positive': array([3, 3]), u'site_user_id': array([226226, 354608], dtype=int32), u'error': array([0, 0]), u'impressions_negative': array([0, 0]), u'accepted': array([0, 2])}
(Ho limitato i risultati della query, sto lavorando con quantità di dati molto più grandi, quindi voglio usare numpy e panda).
La mia conoscenza di Panda è limitata, ho tentato di eseguire le funzionalità molto semplici:
rslt = cassandraSession.execute("SELECT accepted FROM table")
test = rslt[["accepted"]].head(1)
Emette il seguente errore:
Traceback (most recent call last):
File "/UserStats.py", line 27, in <module>
test = rslt[["accepted"]].head(1)
File "cassandra/cluster.py", line 3380, in cassandra.cluster.ResultSet.__getitem__ (cassandra/cluster.c:63998)
TypeError: list indices must be integers, not list
ho capito l'errore, io proprio non lo so come "passare" da questo presunto array numerico a poter usare Pandas.
Grazie per il tuo aiuto! Specificare l'indice per DataFrame era ciò che mi mancava alla fine! – joao
Cosa succede nelle parentesi '.bind ([...])'? – yeliabsalohcin
@yeliabsalohcin Sono le variabili che si desidera inviare alla query. Quindi, se hai una query come questa nella tua dichiarazione preparata: "SELECT * FROM users WHERE user_id =? AND date =?" avrebbero sostituito il "?". – Tickon