我有一个类似下面的系列:
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.shift
和Series.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/