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

如何插值拉伸DataFrame中的数组列,使每行数组长度统一为2540

Pandas 变长数组列插值统一长度解决方案

本方案可实现将DataFrame中存储的不等长数值数组,通过线性插值拉伸为统一的2540长度,无需提前填充NaN。

依赖库

需要提前安装以下常用数据处理库:

  • pandas
  • numpy
  • scipy(可选,纯numpy也可实现基础功能)

核心实现逻辑

将每个数组的坐标归一化到[0,1]区间后,通过插值映射到目标长度对应的坐标点,实现无损拉伸对齐。


完整代码实现

1. 导入依赖

import pandas as pd
import numpy as np

2. 定义插值函数

使用纯numpy实现,无需额外依赖:

def resize_array(arr, target_len: int = 2540):
    """将1维数值数组插值拉伸到指定长度"""
    original_len = len(arr)
    if original_len == target_len:
        return arr
    # 归一化坐标
    original_x = np.linspace(0, 1, original_len)
    target_x = np.linspace(0, 1, target_len)
    # 线性插值
    return np.interp(target_x, original_x, arr)

3. 对DataFrame指定列应用函数

# 替换为你的实际DataFrame变量名
target_df = 你的DataFrame对象

# 对两列分别应用插值
target_df["CurrentCurve"] = target_df["CurrentCurve"].apply(resize_array)
target_df["VoltageCurve"] = target_df["VoltageCurve"].apply(resize_array)

效果验证

执行以下代码可确认所有数组长度已统一为2540:

print(target_df["CurrentCurve"].apply(len).unique())
print(target_df["VoltageCurve"].apply(len).unique())
# 预期输出均为 [2540]

如果需要更高阶的插值方式(比如三次样条插值),可以替换为scipy.interpolate.interp1d实现,只需要修改resize_array函数内部逻辑即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 11:00:02