Tôi đang sử dụng trình điều khiển Cassandra Python để kết nối và truy vấn cụm Cassandra của chúng tôi.Pandas và Cassandra: không tương thích định dạng mảng numpy
Tôi muốn thao tác dữ liệu của tôi qua Pandas, có một khu vực trong tài liệu cho người lái xe cassandra đề cập đến này chính xác: 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.
Tiếp theo hướng dẫn ở trên và thực hiện một truy vấn SELECT trong Cassandra, tôi có thể thấy đầu ra (thông qua các loại() chức năng) như là một:
<class 'cassandra.cluster.ResultSet'>
iterating thông qua các kết quả, điều này những gì in liên tiếp đi lên như:
{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])}
(Tôi đã giới hạn kết quả truy vấn, tôi đang làm việc với số lượng dữ liệu lớn hơn nhiều - do đó, muốn sử dụng số lượng lớn và gấu trúc).
kiến thức của tôi về gấu trúc bị hạn chế, tôi đã cố gắng để chạy chức năng rất cơ bản:
rslt = cassandraSession.execute("SELECT accepted FROM table")
test = rslt[["accepted"]].head(1)
này kết quả đầu ra được lỗi sau:
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
Tôi hiểu lỗi, tôi chỉ không biết làm thế nào để "chuyển tiếp" từ mảng này được cho là numpy để có thể sử dụng Pandas.
Cảm ơn sự giúp đỡ của bạn! Chỉ định chỉ mục cho DataFrame là những gì tôi đã bỏ lỡ cuối cùng! – joao
Cái gì nằm trong dấu ngoặc '.bind ([...])'? – yeliabsalohcin
@yeliabsalohcin Đó là các biến bạn muốn gửi đến truy vấn. Vì vậy, nếu bạn có một truy vấn như thế này trong câu lệnh đã chuẩn bị của bạn: "SELECT * FROM users WHERE user_id =? AND date =?" họ sẽ thay thế "?". – Tickon