2015-11-01 57 views
0

我使用py2neo連接到Neo4j。Py2Neo - 如何避開迭代從密碼查詢返回的記錄對象以訪問查詢數據

比如我有一個查詢,給出了這樣的結果(其實我可以是任何東西:數字,字符串....)

number  | first name | last name 
-------------------------------------- 
1   | Anne   | Hathaway 
2   | Tom   | Cruise 
3  .... 

每當我從蟒蛇執行CYPHER查詢(使用graph.cypher。執行或graph.cypher.stream命令),我得到一個Record對象返回,我需要迭代通過記錄對象訪問個別元素訪問它們,並將它們存儲在例如numpy矩陣。

有沒有辦法讓密碼查詢的結果立即存儲在列表,numpy矩陣,....在python中?

基本上:我如何跳過被返回的記錄對象並避免不必要的操作來準備數據以供進一步計算?

回答

3

你從cypher.execute()得到的是一個RecordList包含Record對象。

兩個RecordListRecord的行爲很像iterables,即你可以通過for x in recordlist的所有記錄,並與for x in record通過單個記錄的所有返回值進行迭代。

ResultList有一個屬性records,它返回Record對象的列表。你可以通過這個來接受列表,如大熊貓數據幀或numpy的矩陣的列表中的任何構造函數:

import py2neo 
import pandas as pd 
import numpy as np 

result = graph.cypher.execute(myquery) 

# Pandas DataFrame 
df = pd.DataFrame(result.records, columns=result.columns) 

# numpy matrix 
matrix = np.matrix(result.records) 

這工作當然只是如果返回可以存儲在數據幀或矩陣數據類型。

+0

太簡單了!我喜歡它。 –