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

如何在Python列表中反向循环取4个值并对全量元素执行对应计算

实现方案

逻辑说明

你需要的是固定窗口大小的滑动加权计算:每个位置的结果由当前位置及向前取最多3个元素(共4个元素,索引越界时取值为0),分别与list2的权重按顺序相乘后求和,计算前需先将DataFrame中的空值填充为0。

方法1:纯Python原生实现

适合小数据量场景,逻辑直观:

import pandas as pd

# 先处理原始DataFrame,填充空值
df['目标列名'] = df['目标列名'].fillna(0)
list1 = df['目标列名'].tolist()
list2 = [0.27, 0.29, 0.24, 0.18]
window_size = len(list2)
result = []

for idx in range(len(list1)):
    current_sum = 0
    for offset in range(window_size):
        # 向前取offset位,索引小于0时取值为0
        val = list1[idx - offset] if idx - offset >= 0 else 0
        current_sum += val * list2[offset]
    result.append(round(current_sum, 4)) # 保留小数位数可按需调整

方法2:pandas滚动窗口实现

适合大数据量场景,运算效率更高:

import pandas as pd

list2 = [0.27, 0.29, 0.24, 0.18]
# 直接在DataFrame列上操作,先填充空值
df['目标列名'] = df['目标列名'].fillna(0)
# 滚动窗口计算,窗口大小为4,不足4个元素时按实际存在的元素计算
df['计算结果'] = df['目标列名'].rolling(window=4, min_periods=1).apply(
    lambda x: (x * list2[::-1][-len(x):]).sum()
)
# 可按需转为列表
result = df['计算结果'].tolist()

两种方法输出的结果长度与list1完全一致,可覆盖所有元素的计算需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 07:12:03