PyArrow中ChunkedArray.Index查询数组列报ArrowTypeError问题
PyArrow查询邻居节点数组的问题解决
问题原因
你用ChunkedArray.index()的方式不对:这个方法是用来查找整个元素在ChunkedArray中的位置,而neighboring_nodes列是list类型,你传入单个整数标量,它会尝试把标量转成list类型去匹配整个元素,所以触发类型错误。而node列是单个整数元素,所以能正常返回结果。
解决方案
1. 提取目标行的邻居数组
因为你是用pc.filter筛选了起始节点的行,结果应该只有一行,直接提取该行的邻居数组:
# 获取筛选后的单行邻居数组 neighbors = filtered_graph['neighboring_nodes'][0]
2. 检查目标节点是否存在
方法一:转Python列表判断(小数据量友好)
target_node = 10000001 is_neighbor = target_node in neighbors.to_pylist()
方法二:用PyArrow Compute函数(大数据量高效)
避免转成Python对象,直接用Arrow原生计算:
import pyarrow.compute as pc import pyarrow as pa target_node = pa.scalar(10000001, type=pa.int64()) # 判断邻居数组中是否存在目标节点 is_neighbor = pc.any(pc.equal(neighbors, target_node)).as_py()
3. 获取目标节点在邻居数组中的位置
如果需要知道目标节点在邻居数组里的索引,用pc.index():
idx = pc.index(neighbors, target_node).as_py() # 未找到时返回-1
内容的提问来源于stack exchange,提问作者Cheptii
相关产品推荐
相关产品推荐

