Python数据帧获取连续值的索引开始和结束
假设我有这个数据帧:Python数据帧获取连续值的索引开始和结束,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有这个数据帧: 0 0 1 1 1 2 1 3 2 4 2 5 3 6 3 7 1 8 1 我想在数据帧中存储每个值(甚至重复的值)的开始索引和结束索引以及相应的值 所以我会得到这样的结果,例如: Value | Start | End ---------------------------- 1 | 0 | 2 2 | 3 | 4 3 | 5
0
0 1
1 1
2 1
3 2
4 2
5 3
6 3
7 1
8 1
我想在数据帧中存储每个值(甚至重复的值)的开始索引和结束索引以及相应的值
所以我会得到这样的结果,例如:
Value | Start | End
----------------------------
1 | 0 | 2
2 | 3 | 4
3 | 5 | 6
1 | 7 | 8
我尝试了以下方法(例如这里的值2):
但每次只返回第一个和最后一个结果。
>>> df
0
0 1
1 1
2 1
3 2
4 2
5 3
6 3
7 1
8 1
解决方案:
starts_bool = df.diff().ne(0)[0]
starts = df.index[starts_bool]
ends = df.index[starts_bool.shift(-1, fill_value=True)]
result = (df.loc[starts]
.reset_index(drop=True)
.assign(Start=starts, End=ends)
.rename({0: 'Value'}, axis='columns')
)
结果:
>>> result
value Start End
0 1 0 2
1 2 3 4
2 3 5 6
3 1 7 8
非常感谢。这就是我需要的。
>>> result
value Start End
0 1 0 2
1 2 3 4
2 3 5 6
3 1 7 8