You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向pandas DataFrame中插入邻点坐标数组且避免使用for循环?

问题原因

你原有代码的错误主要有两点:

  • indices_Neighbours是独立于DataFrame的外部数组,不属于DataFrame的列,无法通过行对象的属性访问
  • np.array传参格式错误,不能将三个独立的Series作为参数直接传入

最优实现方案(高性能,适配GB级数据)

先把坐标转成numpy数组,直接通过索引批量取值,避免pandas行级遍历的开销:

# 先把所有坐标转成numpy数组,每一行对应一个点的[X,Y,Z]坐标
coord_array = inFile[["X", "Y", "Z"]].values
# 直接用邻点索引数组批量取坐标,转成要求的列表格式
inFile["Neighbours_Coordinates"] = [coord_array[idx].tolist() for idx in indices_Neighbours]

方案说明

  • 全程都是numpy向量化索引操作,列表推导的开销远低于pandas的apply行遍历,处理GB级数据时性能优势非常明显
  • 输出格式和你要求的完全一致,每个单元格存储所有邻点坐标组成的二维列表

修复原有apply写法(不推荐,性能更低)

如果你一定要用apply实现,也可以修改为如下可运行版本,但处理大数据量时速度会慢很多:

coord_array = inFile[["X", "Y", "Z"]].values
inFile["Neighbours_Coordinates"] = inFile.apply(
    lambda row: coord_array[indices_Neighbours[row.name]].tolist(), 
    axis=1
)

内容的提问来源于stack exchange,提问作者Sadae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:24:00