gpt4 book ai didi

python - pandas 如何按行迭代计算一个类别的实例并在另一个类别出现时重置它们?

转载 作者:行者123 更新时间:2023-12-04 07:28:06 24 4
gpt4 key购买 nike

我有一个显示机器行为的数据帧。该机器可以处于两种状态:生产或清洁。因此,我有一个名为“Production”的虚拟变量,当机器正在生产时显示为 1,在不生产时显示为 0。我想知道生产周期(机器在停止生产之前保持生产多少小时,以及在重新启动整个过程之前停止生产多少时间)。因此,我想创建一个列来计算机器在每个状态下的时间(多少行),但是当另一个类别再次出现时它应该自行重置。
例子:

production production_cycle
1 5
1 5
1 5
1 5
1 5
0 2
0 2
1 1
0 3
0 3
0 3

最佳答案

您可以先通过查看它所在的点来检测转折点 diff来自上一个。然后这个的累积总和给出了所需的分组。我们transform这与 count获取每个组的大小:

>>> grouper = df.production.diff().ne(0).cumsum()
>>> df["production_cycle"] = df.groupby(grouper).transform("count")
>>> df

production production_cycle
0 1 5
1 1 5
2 1 5
3 1 5
4 1 5
5 0 2
6 0 2
7 1 1
8 0 3
9 0 3
10 0 3
grouper
>>> grouper

0 1
1 1
2 1
3 1
4 1
5 2
6 2
7 3
8 4
9 4
10 4

关于python - pandas 如何按行迭代计算一个类别的实例并在另一个类别出现时重置它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68113477/

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