我有一个 Dataframe 如下:
df =
integer_id begin
0 13
0 15
0 18
0 19
1 10
1 15
1 17
我想计算第三列end
,其中df.end
由给定integer_id
的下一个df.start
定义,因此,例如,
上述内容将成为
df =
integer_id begin end
0 13 15
0 15 18
0 18 19
0 19
1 10 15
1 15 17
1 17
此外,对于每个integer_id
的最后一行,我希望end
转到25
,对于每个integer_id
的第一行,我希望start
截断为10
,因此最终我们将得到
df =
integer_id begin end
0 10 15
0 15 18
0 18 19
0 19 20
1 10 15
1 15 17
1 17 20
我不太擅长Pandas,但我想我必须在这里使用apply
和groupby('integer_id')
,或者有没有其他方法可以在这里应用?
1条答案
按热度按时间guicsvcw1#
使用
groupby.shift
+fillna
和布尔索引duplicated
:输出: