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

Pandas插值时apply传入整列而非单行值的问题如何解决?

问题修复方案

你当前代码的问题是:仅对df['new']单列调用apply时,无法同步获取该行对应的x_字段值,传入的df['x_']是完整的列数据,自然不符合要求。

方法1:最小改动修复(复用现有逻辑)

把错误行替换为按行遍历的apply,指定axis=1即可同时读取同一行的new和x_值:

df['interpolate2'] = df.apply(lambda row: interpolate_iv_my(x, row['new'], row['x_']), axis=1)

方法2:优化写法(省去冗余中间列)

你不需要专门生成new列存储每行的y值列表,可以直接在apply中读取对应列的值,代码更简洁:

import pandas as pd
import numpy as np
from scipy.interpolate import interp1d

def interpolate_iv_my(x,y,newX_Value):
    y_interp =  interp1d(x,y)
    iv = y_interp(newX_Value)
    return iv

df = pd.DataFrame({'30': [-23, 12, -12, 10, -23, 12, -32, 15, -20, 10],
                   '40': [-30, 20, -21, 15, -33, 22, -40, 25, -22, 12],
                   '50': [-40, 25, -26, 19, -39, 32, -45, 35, -32, 18],
                   '60': [-45, 34, -29, 25, -53, 67, -55, 45, -42, 19],
})

x = [30,40,50,60]
df['x_'] = np.random.choice([35,33,42,52],10).tolist()
cols = ['30','40','50','60']
# 直接按行读取对应列做插值,无需中间列
df['interpolate2'] = df.apply(lambda row: interpolate_iv_my(x, row[cols].values, row['x_']), axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:09:02