我有一个看起来像这样的熊猫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
答案 0 :(得分:2)
IIUC将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 :(得分:1)
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