gpt4 book ai didi

python - 找出 Pandas 的条纹长度

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:27 25 4
gpt4 key购买 nike

我有一个 pandas 数据框,其中一列描述了一个整数时间索引,我想添加一个列来存储一行是否是连续的一部分以及连续多长时间。例如,给定 time 列,我想计算一个 streak 列,就像这样

time    streak
0 3
1 3
2 3
4 2
5 2
5 2
9 1
11 1
11 1

前三行是连续三行的一部分,因为索引 0、1、2 是连续的。由于索引 4,5 也是连续的,因此以下三行的连胜数为 2;索引 5 重复,但在确定连胜的长度时不应计算在内。最后,最后三行不与其他任何内容相邻,因此它们的连胜数为 1。请注意,有时不止一行可以具有相同的 time。我需要以时间单位计算条纹的长度,以便多个条目不会影响条纹的长度,并且具有相同时间索引的行具有相同的条纹长度。请记住,其他列(未显示)存储在数据框中。

如何获取值?我尝试使用 groupbyshift 和类似的函数,但效果并不理想。

编辑:抱歉,我忘记说明有时 time 索引可以重复。我扩展了这个问题以考虑到这一点。

最佳答案

使用diff判断是否继续(等于1),然后cumsum条件匹配,然后我们使用groupby + 转换 szie

s=df.time.diff().fillna(1).ne(1).cumsum()
s.groupby(s).transform('size')
Out[396]:
0 3
1 3
2 3
3 2
4 2
5 1
6 1
Name: time, dtype: int32

关于python - 找出 Pandas 的条纹长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370489/

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