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

如何在Pandas中计算最长连续正负数值序列的求和结果?

解决方案

方法一:基于你现有代码修改(使用itertools.groupby)

你可以在分组时同时记录每个连续序列的长度和求和值,之后筛选出最长序列对应的和:

import pandas as pd
from collections import defaultdict
from itertools import groupby

# 初始化DataFrame
data = [10,-20,30,40,-50,60,12,-12,11,1,90,-20,-10,-5,-4]
df = pd.DataFrame(data, columns=['Numbers'])

streak = df['Numbers'].to_list()
counter = defaultdict(list)

# 按正负分组,记录每个连续序列的长度与和
for key, val in groupby(streak, lambda ele: "plus" if ele > 0 else "minus"):
    seq = list(val)
    counter[key].append( (len(seq), sum(seq)) )

# 获取最长连续正数序列的和
max_pos_length = max(item[0] for item in counter['plus'])
sum_pos_max = next(item[1] for item in counter['plus'] if item[0] == max_pos_length)

# 获取最长连续负数序列的和
max_neg_length = max(item[0] for item in counter['minus'])
sum_neg_max = next(item[1] for item in counter['minus'] if item[0] == max_neg_length)

print(f"Sum Pos Max Consecutive: {sum_pos_max}")
print(f"Sum Neg Max Consecutive: {sum_neg_max}")

输出结果:

Sum Pos Max Consecutive: 102
Sum Neg Max Consecutive: -39

方法二:使用Pandas原生分组方法(更适合大数据场景)

利用Pandas的分组功能直接标记连续序列,再计算分组的长度与和:

import pandas as pd

# 初始化DataFrame
data = [10,-20,30,40,-50,60,12,-12,11,1,90,-20,-10,-5,-4]
df = pd.DataFrame(data, columns=['Numbers'])

# 标记每个元素的正负属性
df['sign'] = df['Numbers'].apply(lambda x: 'plus' if x > 0 else 'minus')

# 创建连续序列的分组键:当正负属性变化时,分组号递增
df['group_id'] = (df['sign'] != df['sign'].shift()).cumsum()

# 按正负属性+分组号聚合,计算每个连续序列的长度与和
group_stats = df.groupby(['sign', 'group_id']).agg(
    sequence_length=('Numbers', 'count'),
    sequence_sum=('Numbers', 'sum')
).reset_index()

# 筛选出最长连续序列的和
sum_pos_max = group_stats[group_stats['sign'] == 'plus'].nlargest(1, 'sequence_length')['sequence_sum'].iloc[0]
sum_neg_max = group_stats[group_stats['sign'] == 'minus'].nlargest(1, 'sequence_length')['sequence_sum'].iloc[0]

print(f"Sum Pos Max Consecutive: {sum_pos_max}")
print(f"Sum Neg Max Consecutive: {sum_neg_max}")

输出结果与方法一一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:40:28