【发布时间】:2021-05-26 06:13:27
【问题描述】:
我正在尝试读取具有节点 ID 及其各自关系的 csv 文件。前两列代表节点,第三列代表它们之间的关系。到目前为止,我能够在 neo4j 中创建数据库,但我不确定将所需数据提取到 pandas DataFrame 中的密码查询是什么!
我将在这里使用大型数据集的子集来说明我的问题。原始数据集包含数千个节点和关系。
我的 csv 文件(Node1_id、Node2_id、relation_id)如下所示:
0 1 1
4 2 1
44 3 1
0 4 1
0 5 1
4 10173 3
4 10191 2
4 10192 2
6 10193 2
8 10194 2
3 10195 2
6 10196 2
这里是节点创建和通过从 csv 文件加载 id 来定义节点之间的关系。 (我想这张图是正确的,但如果您发现任何问题,请告诉我) 我正在使用 csv 文件中的 id 为节点和关系分配一个属性“id”。
LOAD CSV WITH HEADERS FROM 'file:///edges.csv' AS row FIELDTERMINATOR ","
WITH row
WHERE row.relation_id = '1'
MERGE (paper:Paper{id:(row.Node1_id)})
MERGE (author:Author{id:(row.Node2_id)})
CREATE (paper)-[au:AUTHORED{id: '1'}]->(author);
到目前为止,我已经尝试过这样的事情:
query = ''' MATCH (paper)-[au:AUTHORED{id: '1'}]->(author) RETURN paper,author LIMIT 3; '''
result = session.run(query)
df = DataFrame(result)
for dataF in df.itertuples(index=False):
print(row)
它返回这个:
0 1
0 (id) (id)
1 (id) (id)
2 (id) (id)
期望的结果:
我希望通过从 graphDB 中查询数据并逐行迭代结果,以带有节点 id 和关系 id 的格式(如上面 csv 中定义)将结果放入 pandas DataFrame。
0 1 1
4 2 1
44 3 1
0 4 1
0 5 1
4 10173 3
4 10191 2
4 10192 2
6 10193 2
8 10194 2
3 10195 2
6 10196 2
我也很想知道密码查询对象的返回类型是什么,在这种情况下它是pandas.core.frame.DataFrame,但是我如何在密码查询期间访问节点和关系的独立属性。这是主要问题。
请随时详细解释,非常感谢您的帮助。
使用 neo4j 版本:4.2.1
【问题讨论】:
标签: python pandas neo4j cypher graph-databases