Как создать связь между двумя разными колонками в Neo4j - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь установить отношение между двумя столбцами в Neo4j . мой набор данных - CSV-файл с двухколоночным относится к соавторству , и я хочу создать из него сеть. Я уже загружаю данные, возвращаю их и сопоставляю их.

Загрузка

load csv from 'file:///conet1.csv' as rec

возвращает данные

create (:Guys {source: rec[0], target: rec[1]})

теперь мне нужно построить сеть для совместной работы данных, установив отношение между исходным и целевым столбцами . Что вы предлагаете для этой цели?

Мне удалось установить связь между упомянутыми столбцами в графическом массиве NetworkX в python следующим образом:

import pandas as pd
import networkx as nx
g = nx.Graph()
df = pd.read_excel('Colab.csv', columns= ['source', 'target'])
g = nx.from_pandas_edgelist(df,'source','target', 'weight')

1 Ответ

2 голосов
/ 16 октября 2019

Если я понимаю ваш вариант использования, я не верю, что вы должны создавать Guys узлы только для хранения информации о взаимоотношениях. Вместо этого, граф-ориентированный подход заключается в создании узла Author для каждого автора и отношений (скажем, типа COLLABORATED_WITH) между соавторами.

Это может работать для вас, илипо крайней мере, дать вам подсказку:

LOAD CSV FROM 'file:///conet1.csv' AS rec
MERGE (source:Author {id: rec[0]})
MERGE (target:Author {id: rec[1]})
CREATE (source)-[:COLLABORATED_WITH]->(target)

Если возможно, что такие же отношения могут быть воссозданы, вы должны заменить CREATE на более дорогой MERGE. Кроме того, работа может иметь любое количество соавторов, поэтому отношения между каждой парой могут быть неоптимальными в зависимости от того, что вы пытаетесь сделать;но это отдельная тема.

...