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

DataFrames.jl中transform调用LinearInterpolation报错如何解决

问题原因

这个报错是由DataFrames的转换语法规则和插值对象的特性共同导致的:
Interpolations.jl生成的线性插值对象li同时支持迭代操作(可直接遍历拿到所有插值节点的数值),而DataFrames的源列 => 操作 => 目标列语法中,如果操作位置的对象是可迭代的,会被优先识别为列选择器,而非要应用的转换函数,因此抛出了“无法识别的列选择器”错误。

解决方法

只要明确告知DataFrames该位置是要执行的函数即可,有两种常用实现方式:

  • 方式1:将插值调用包裹在匿名函数中
transform(df, :x => (x -> li(x)) => :y)
  • 方式2:用ByRow标记是作用于每一行的函数(插值对象本身支持标量输入,该写法同样有效)
transform(df, :x => ByRow(li) => :y)

执行任意一种写法后,都会在df中生成和li(df.x)结果完全一致的:y列。

内容的提问来源于stack exchange,提问作者Bogumił Kamiński

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:15:06