gpt4 book ai didi

python - Pandas:查找一列中相隔 50 个单位的连续项目

转载 作者:行者123 更新时间:2023-12-01 01:59:39 24 4
gpt4 key购买 nike

我有一个 pandas 数据框,可以长也可以短,如下所示

          alt    start      end
0 borderline 6017254 6017304
1 borderline 6017304 6017354
2 borderline 6017354 6017404
3 duplicated 6018212 6018262
4 borderline 6018262 6018312
5 borderline 6018312 6018362

我需要在 startend 列中找到“连续”项目。我可以按 alt 进行分组并获取每个 alt 类型的行,但是 startend 中的连续项目是在列或行上间隔 50 个单位。综上所述,我想要获得的是

          alt    start      end
0 borderline 6017254 6017404
1 duplicated 6018212 6018262
2 borderline 6018262 6018362

预先感谢您的帮助。

最佳答案

使用shiftgroupby

df.groupby([df.alt,(df.start.shift(-1)==df.end).shift().ne(True).cumsum()],sort=False).agg({'alt':'first','start':'first','end':'last'})
Out[433]:
alt start end
alt
borderline 1 borderline 6017254 6017404
duplicated 2 duplicated 6018212 6018262
borderline 2 borderline 6018262 6018362

关于shift的更多信息,它会创建组键,通过使用start来匹配前一个end,如果匹配,则属于同一组,如果不匹配,则返回False,然后在cumsum之后 我们数到下一组

(df.start.shift(-1)==df.end).shift().ne(True).cumsum()

Out[434]:
0 1
1 1
2 1
3 2
4 2
5 2
dtype: int32

关于python - Pandas:查找一列中相隔 50 个单位的连续项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49824015/

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