Нарезка pandas кадра данных на равные значения столбца - PullRequest
0 голосов
/ 06 марта 2020

У меня есть pandas 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

enter image description here

Имена столбцов отражают координаты. Я хотел бы получить начальную и конечную координаты столбцов с последовательными равными числами.

Вывод должен выглядеть примерно так:

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

Ответы [ 2 ]

2 голосов
/ 06 марта 2020

II, используя groupby с diff и cumsum для разделения группы

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
1 голос
/ 06 марта 2020

cumsum для идентификации группы и groupby:

s = df.iloc[0].diff().ne(0).cumsum()
(df.columns.to_series()
 .groupby(s).agg(['min','max'])
)

Вывод:

   min  max
0          
1    0   15
2   20   25
3   30   35
4   40   50
...