2 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個贊
使用以下代碼:
result = myDF.groupby((myDF.ID != myDF.ID.shift()).cumsum()).agg(
ID=('ID', 'first'), start=('seconds', 'first'), end=('seconds', 'last'))\
.query('ID == 1').drop(columns='ID').reset_index(drop=True)
對于您的數(shù)據(jù)樣本,結(jié)果是:
start end
0 4 7
1 12 15

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個贊
import pandas as pd
from itertools import groupby
myDF = pd.DataFrame({'ID': [0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1], 'seconds': (np.arange(16))})
tmp, m = [], myDF['ID'] == 1
for v, g in groupby(zip(m.index, m), lambda k: k[1]):
if v:
g = list(g)
tmp.append((g[0][0], g[-1][0]))
df = pd.DataFrame(tmp, columns=['start', 'end'])
print(df)
印刷:
start end
0 4 7
1 12 15
添加回答
舉報(bào)