我有一个类似下面的系列:

index value
0       0
1       1
2       1
3       1
4       0
5       0
6       1
7       1
8       0
9       1
10      0
11      0
12      1
13      1
14      0


预期的输出是:

index, start, end
0       1       3
1       6       7
2       9       9
3       12      13


如何用熊猫做到这一点?

最佳答案

Series.shiftSeries.cumsum创建连续的1组,并用Series.eq==)过滤,然后合计GroupBy.first
 和
GroupBy.last

df = df.reset_index()
m = df['value'].eq(1)
g = m.ne(m.shift()).cumsum()[m]

df = df.groupby(g)['index'].agg([('start','first'),('end','last')]).reset_index(drop=True)
print (df)
   start  end
0      1    3
1      6    7
2      9    9
3     12   13

关于python - 如何获得一系列1组的开始和结束索引?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60092544/

10-12 20:16