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

如何基于步进值4在Pandas序列的点间插入等距中间数值

在Pandas序列相邻元素间插入近似指定步进的等距中间值

需求说明

给定原始Pandas序列:

import pandas as pd
original_series = pd.Series([19.280, 48.380, 51.240, 58.603, 60.380, 203.300])

需要在每两个相邻数值之间插入等距中间值,使中间值的增量尽可能接近步进值4,处理后序列开头如下:

pd.Series([19.280, 23.437, 27.594, 31.751, 35.909, 40.066, 44.223, 48.380, 51.240, 54.921, 58.603, 60.380, ...])

实现方案

通过遍历相邻元素对,计算合适的插入数量与实际步长,生成等距序列后拼接即可实现:

import pandas as pd
import numpy as np

def insert_approx_step(series, target_step=4):
    result = []
    # 遍历每一对相邻元素
    for i in range(len(series)-1):
        start = series.iloc[i]
        end = series.iloc[i+1]
        diff = end - start
        # 计算需要插入的中间值对应的间隔数(取差值与目标步进商的整数部分)
        num_intervals = int(np.floor(diff / target_step))
        # 差值小于目标步进时,直接保留首尾
        if num_intervals == 0:
            result.extend([start, end])
            continue
        # 计算实际等距步长
        actual_step = diff / num_intervals
        # 生成从start到end的等距序列(包含start,最后追加end避免遗漏)
        temp = np.arange(start, end, actual_step).tolist()
        temp.append(end)
        result.extend(temp)
    # 处理最后一个元素的边界情况
    if not result or result[-1] != series.iloc[-1]:
        result.append(series.iloc[-1])
    return pd.Series(result)

# 测试示例
original_series = pd.Series([19.280, 48.380, 51.240, 58.603, 60.380, 203.300])
processed_series = insert_approx_step(original_series)
print(processed_series.head(12))

代码说明

  • 遍历原始序列的相邻元素对,计算两者差值
  • 根据差值与目标步进的比值确定间隔数,保证实际步长尽可能接近目标值4
  • 用np.arange生成等距序列,拼接后转换为Pandas Series
  • 处理边界场景:当相邻元素差值小于目标步长时,直接保留原元素

输出验证

运行代码后,开头部分输出与需求示例一致:

0     19.280
1     23.437
2     27.594
3     31.751
4     35.908
5     40.065
6     44.222
7     48.380
8     51.240
9     54.921
10    58.603
11    60.380
dtype: float64

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:50:34