Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python数据帧获取连续值的索引开始和结束_Python_Pandas_Dataframe - Fatal编程技术网

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