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

如何计算Pandas DataFrame列表列元素的递增步长并生成新列

解决方案

核心通过Pandas的apply()方法对changes列的每个列表元素执行自定义步长计算逻辑即可,完整实现代码如下:

import pandas as pd

# 构造测试用DataFrame
df = pd.DataFrame({
    'test': ['test03', 'test45', 'test07', 'test04', 'test09'],
    'changes': [
        [3, 8],
        [0, 5],
        [7, 8, 9, 0, 1, 2, 3, 4, 5, 6],
        [2, 4, 6, 8, 0],
        [0, 1, 9, 2, 3, 4, 5, 6, 7, 8]
    ]
})

# 自定义步长计算函数
def calc_step(lst):
    # 先对列表做升序排序
    sorted_lst = sorted(lst)
    # 计算所有相邻元素的差值
    diffs = [sorted_lst[i+1] - sorted_lst[i] for i in range(len(sorted_lst)-1)]
    # 取差值的唯一值(题目已说明固定步长为1/2/5,唯一值仅一个)
    return next(iter(set(diffs)))

# 新增steps列
df['steps'] = df['changes'].apply(calc_step)

# 输出结果
print(df)

运行后输出结果和需求完全一致:

test                                 changes  steps
0  test03                                  [3, 8]      5
1  test45                                  [0, 5]      5
2  test07  [7, 8, 9, 0, 1, 2, 3, 4, 5, 6]      1
3  test04                     [2, 4, 6, 8, 0]      2
4  test09  [0, 1, 9, 2, 3, 4, 5, 6, 7, 8]      1

如果需要兼容异常场景(比如列表存在误差导致差值不唯一),可以修改计算逻辑取出现频次最高的差值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:09:03