【发布时间】:2022-01-24 16:18:53
【问题描述】:
我有一些 csv 格式的数据。每行描述两个节点之间的关系。节点可以与其他节点有多个关系,尽管每行只有一个关系。
例如,这是从 csv 中的一行派生的关系:
(Entity1:Name {Type,Details})-[关系类型]->(Entity2:Name {Type,Details})
Entity1 可以在不同的行中代替 Entity2,反之亦然。 Entity1 也可以与 Entity3 和 Entity4 等有关系,尽管它的类型永远不会改变。
使用 Py2Neo 我可以导入和创建关系,但最终会得到实体的大量重复节点。我希望每个实体节点都是唯一的。这就是我所拥有的:
def payload1(entity1,type1,relationtype,details_one,entity2,type2,details_two):
graph = Graph("bolt://localhost:7687",auth=("Admin", "Password"))
Entity1 = Node(type1,Name=entity1,Details=details_one)
Entity2 = Node(type2,Name=entity2,Details=details_two)
graph.create(Entity1)
graph.create(Entity2)
graph.create(Relationship(Entity1,relationtype,Entity2))
df = pd.read_csv ('Data.csv')
entities1 = df['Entity1'].tolist()
types1 = df['Type'].tolist()
relations1 = df['RelationType'].tolist()
details1 = df['Details'].tolist()
entity2 = df['Entity2'].tolist()
types2 = df['Type2'].tolist()
details_two = df['Details.1'].tolist()
for (a, b, c,d,e,f,g) in itertools.zip_longest(entities1,types1,relations1,details1,entity2,types2,details_two):
print (a, b, c,d,e,f,g)
data = [((a,b,d),(c),(e,f,g))]
keys = ["Name","Type","Details"]
payload1(a,b,c,d,e,f,g)
【问题讨论】: