如何求和求最大负数串?

问题描述 投票:0回答:1

这是我的数据框:

import pandas as pd

df = pd.DataFrame(
    {
        'a': [-3, -1, -2, -5, 10, -3, -13, -3, -2, 1, -200, -100],
    }
)

预期输出:

  a
10 -200
11 -100

逻辑:

我想返回负数的最大连续串之和。换句话说,我想要至少两个连续的负行,然后我希望它的总和在绝对值方面是最大的:

我的尝试基于这个答案

s = np.sign(df['a'])
g = s.ne(s.shift()).cumsum()
out = df[g.eq(df[s.eq(-1)].groupby(g).sum().idxmax())]

它给了我一个空的数据框

python pandas dataframe
1个回答
0
投票

转换而不是聚合,然后您可以使用它来过滤最低的总和。

s = np.sign(df['a'])
g = s.ne(s.shift()).cumsum()
m = df.groupby(g).transform(sum)['a']
out = df[m.min() == m]
      a
10 -200
11 -100
© www.soinside.com 2019 - 2024. All rights reserved.