更新 GraphFrame 中的顶点值
Update vertices values in GraphFrame
我想知道在使用GraphFrame
构建图形后,有什么方法可以更新顶点(或边)的值吗?我有一个图,它的顶点有这些 ['id', 'name', 'age']
列。我已经编写了一个代码来创建具有新年龄的顶点并且它工作得很好。但是,当我想将这些新顶点分配给旧图的顶点时,出现 can't set attribute
错误。
from graphframes import GraphFrame
import pyspark.sql.functions as F
# Vertice DataFrame
v = spark.createDataFrame([
("a", "Alice", 34),
("b", "Bob", 36),
("c", "Charlie", 30),
], ["id", "name", "age"])
# Edge DataFrame
e = spark.createDataFrame([
("a", "b", "friend"),
("b", "c", "follow"),
("c", "b", "follow"),
], ["src", "dst", "relationship"])
# Create a GraphFrame
g = GraphFrame(v, e)
# Update Vertices
updated_vertices = (
g.vertices
.withColumn('new_age', F.lit(10))
.select(
'id',
'name',
F.col('new_age').alias('age')
)
)
# Set new vertices
g.vertices = updated_vertices
AttributeError: can't set attribute
我应该重建一个新的图形对象吗?或者有更好的方法吗?
谢谢。
您必须创建一个新的图形对象才能进行更新。但是,由于 graphframe 对象只有两个数据框,您可以更新为
g = GraphFrame(updated_vertices, e)
所以保持同名
我想知道在使用GraphFrame
构建图形后,有什么方法可以更新顶点(或边)的值吗?我有一个图,它的顶点有这些 ['id', 'name', 'age']
列。我已经编写了一个代码来创建具有新年龄的顶点并且它工作得很好。但是,当我想将这些新顶点分配给旧图的顶点时,出现 can't set attribute
错误。
from graphframes import GraphFrame
import pyspark.sql.functions as F
# Vertice DataFrame
v = spark.createDataFrame([
("a", "Alice", 34),
("b", "Bob", 36),
("c", "Charlie", 30),
], ["id", "name", "age"])
# Edge DataFrame
e = spark.createDataFrame([
("a", "b", "friend"),
("b", "c", "follow"),
("c", "b", "follow"),
], ["src", "dst", "relationship"])
# Create a GraphFrame
g = GraphFrame(v, e)
# Update Vertices
updated_vertices = (
g.vertices
.withColumn('new_age', F.lit(10))
.select(
'id',
'name',
F.col('new_age').alias('age')
)
)
# Set new vertices
g.vertices = updated_vertices
AttributeError: can't set attribute
我应该重建一个新的图形对象吗?或者有更好的方法吗?
谢谢。
您必须创建一个新的图形对象才能进行更新。但是,由于 graphframe 对象只有两个数据框,您可以更新为
g = GraphFrame(updated_vertices, e)
所以保持同名