gpt4 book ai didi

python - 如何识别数据框中具有连续索引的子集

转载 作者:行者123 更新时间:2023-11-28 22:18:11 27 4
gpt4 key购买 nike

我有一个定义如下的数据框:

df = pd.DataFrame({'A':[5,8,96,3,5,41,2,45,7,8], 'B':[1,2,3,5,6,10,11,12,13,18]})
df = df.set_index('B')
df.index.name = None

我的目标是为具有连续索引的数据帧子集分配一个值,如下所示:

enter image description here

算法:正如您从图像中看到的那样,前 3 行的索引为 1、2、3,它们增加 1(因此是连续的)。因此,我将 C 列中的值 0 分配给该子集。第二个子集由具有连续索引 5 和 6 的行组成(注意没有索引 4!)。因此,我在 C 列中为它们分配了值 1。

问题:您知道实现这样的结果的高效且智能的方法吗?我能够通过使用大量 for 循环和 ifs 来实现这样的结果,但它非常讨厌。

最佳答案

您可以将diffcumsum 一起使用;计算diff,检查它是否等于1(连续条件)然后cumsum(计数)非连续跳跃:

df['C'] = df.index.to_series().diff().ne(1).cumsum().sub(1) 

df
# A C
#1 5 0
#2 8 0
#3 96 0
#5 3 1
#6 5 1
#10 41 2
#11 2 2
#12 45 2
#13 7 2
#18 8 3

关于python - 如何识别数据框中具有连续索引的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50723114/

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