首页 > 解决方案 > 在相等的列值上切片熊猫数据框

问题描述

我有一个看起来像这样的熊猫 df:

import pandas as pd

df = pd.DataFrame({0:[1],5:[1],10:[1],15:[1],20:[0],25:[0],
                   30:[1],35:[1],40:[0],45:[0],50:[0]})
df

在此处输入图像描述

列名反映坐标。我想检索具有连续相等数字的列的开始和结束坐标。

输出应该是这样的:

# start,end
0,15 
20,25
30,35
40,50

标签: pythonpandasslice

解决方案


IIUCgroupby使用diffcumsum拆分组

s=df.T.reset_index()
s=s.groupby(s[0].diff().ne(0).cumsum())['index'].agg(['first','last'])
Out[241]: 
   first  last
0             
1      0    15
2     20    25
3     30    35
4     40    50

推荐阅读