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

如何使用Pandas对DataFrame中负数后的连续3个元素求和?

解决DataFrame中计算负数后连续3个元素和的问题

示例数据

先构造符合需求的示例DataFrame:

import pandas as pd

df = pd.DataFrame({
    'original': [-1, 2, 3, 4, -2, 5, 6, 4, 1]
})

方案1:生成结果列表

提取所有负数的索引,遍历每个索引计算其后连续3个元素的和:

# 获取所有负数的位置索引
neg_indices = df[df['original'] < 0].index.tolist()

# 计算每个负数后连续3个元素的和
result_list = [df['original'].iloc[i+1:i+4].sum() for i in neg_indices]
print(result_list)  # 输出: [9, 15]

方案2:将结果映射到原DataFrame列中

新增一列存储对应负数的计算结果,非负数行填充缺失值:

df['post_neg_sum'] = pd.NA

for idx in neg_indices:
    # 确保后续有足够的元素(避免索引越界)
    if idx + 3 < len(df):
        df.loc[idx, 'post_neg_sum'] = df['original'].iloc[idx+1:idx+4].sum()

print(df)

执行后输出的DataFrame如下:

original post_neg_sum
0        -1            9
1         2         <NA>
2         3         <NA>
3         4         <NA>
4        -2           15
5         5         <NA>
6         6         <NA>
7         4         <NA>
8         1         <NA>

补充说明

如果遇到负数位于DataFrame末尾、后续不足3个元素的情况,上述代码会跳过该负数的计算(保持对应位置为pd.NA),你也可以根据需求调整逻辑,比如返回现有元素的和或其他默认值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:30:59