gpt4 book ai didi

python - 如何在值符号更改后重置 cumsum?

转载 作者:行者123 更新时间:2023-12-02 17:10:45 24 4
gpt4 key购买 nike

In [46]: d = np.random.randn(10, 1) * 2

In [47]: df = pd.DataFrame(d.astype(int), columns=['data'])

我正在尝试创建一个 cumsum 列,它应该在数据列中的符号更改后重置,就像这样

   data  custom_cumsum
0 -2 -2
1 -1 -3
2 1 1
3 -3 -3
4 -1 -4
5 2 2
6 0 2
7 3 5
8 -1 -1
9 -2 -3

我可以使用 df.iterrows() 实现这一点。我试图避免 iterrows 并使用向量操作来完成它。关于 resetting 有几个问题cumsum当有 NaN 时。我无法用这些解决方案实现这个 cumsum。

最佳答案

groupby创建新键,然后在每个组内执行cumsum

新key创建:通过符号change,如果change加1则属于嵌套组

df.groupby(df.data.lt(0).astype(int).diff().ne(0).cumsum()).data.cumsum()
Out[798]:
0 -2
1 -3
2 1
3 -3
4 -4
5 2
6 2
7 5
8 -1
9 -3
Name: data, dtype: int64

关于python - 如何在值符号更改后重置 cumsum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49390300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com