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

pandas DataFrame积分结果长度与原表不一致,如何存入同一DataFrame?

解决方案

scipy.integrate.cumtrapz 默认返回的结果长度为输入序列长度减1,这是因为积分默认从第二个点开始计算累计值,没有包含初始点的积分初始值,所以会出现长度不匹配的报错,可通过以下两种方法解决:

方法1:使用内置initial参数(推荐)

直接在调用cumtrapz时添加initial=0参数,指定初始点的积分值为0,此时返回的结果长度和原DataFrame行数完全一致,可直接赋值:

from scipy.integrate import cumtrapz

df["z"] = cumtrapz(df.x, df.y, initial=0)

方法2:手动拼接初始值

如果需要自定义初始值,也可以手动给积分结果数组前补一位初始值,再赋值给DataFrame:

import numpy as np
from scipy.integrate import cumtrapz

integral_res = cumtrapz(df.x, df.y)
# 首位补0作为初始积分值
df["z"] = np.insert(integral_res, 0, 0)

两种方法得到的z列,第0行对应初始积分值0,第1行到第7行就是你原代码输出的7个积分结果,完全匹配计算需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:36:03