gpt4 book ai didi

python - 如果与最后一行连续出现,则添加值,否则保持相同的值

转载 作者:行者123 更新时间:2023-12-04 10:34:34 26 4
gpt4 key购买 nike

我有一个包含两列(时间,值)的数据框,其中包含格式为 HH:MM:SS 的时间数据和针对每个时间值的一些值。示例数据如下所示以供引用:

Time        Value
09:15:00 0
09:15:30 0
09:15:31 0
09:15:32 85
09:15:33 168
09:15:34 50
09:15:34 100
09:15:35 0
09:15:35 0
09:15:36 0
09:15:37 0
09:15:37 0
09:15:38 40
09:15:39 0
09:15:39 0
09:15:39 0
09:15:40 51
09:15:40 0
09:15:41 250
09:15:42 110
09:15:43 42
09:15:44 0
09:15:45 0

如果值出现连续(非零值)到最后一行,我想将值添加到最后一行,并且如果值被隔离,则需要保持相同的值。

示例输出如下:
Time        Value   Result
09:15:00 0 0
09:15:30 0 0
09:15:31 0 0
09:15:32 85 0
09:15:33 168 0
09:15:34 50 0
09:15:34 100 403
09:15:35 0 0
09:15:35 0 0
09:15:36 0 0
09:15:37 0 0
09:15:37 0 0
09:15:38 40 40
09:15:39 0 0
09:15:39 0 0
09:15:39 0 0
09:15:40 51 51
09:15:40 0 0
09:15:41 250 0
09:15:42 110 0
09:15:43 42 402
09:15:44 0 0
09:15:45 0 0

最佳答案

形成连续的组,采用 bool 掩码的总和。然后取每组内的cumsum。使用 where屏蔽除组中最后一行之外的所有内容(因为 cumsum(0) == 0 这也适用于所有 0 行),然后我们用 0 填充我们屏蔽的值。

s = df['Value'].eq(0).cumsum()
df['Result'] = (df['Value'].groupby(s).cumsum()
.where(~s.duplicated(keep='last'))
.fillna(0, downcast='infer'))
        Time  Value  Result
0 09:15:00 0 0
1 09:15:30 0 0
2 09:15:31 0 0
3 09:15:32 85 0
4 09:15:33 168 0
5 09:15:34 50 0
6 09:15:34 100 403
7 09:15:35 0 0
8 09:15:35 0 0
9 09:15:36 0 0
10 09:15:37 0 0
11 09:15:37 0 0
12 09:15:38 40 40
13 09:15:39 0 0
14 09:15:39 0 0
15 09:15:39 0 0
16 09:15:40 51 51
17 09:15:40 0 0
18 09:15:41 250 0
19 09:15:42 110 0
20 09:15:43 42 402
21 09:15:44 0 0
22 09:15:45 0 0

关于python - 如果与最后一行连续出现,则添加值,否则保持相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60250610/

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