こんな感じで出来るかと思います
Python
1import pandas as pd
2
3# データ作成
4N = 20
5df = pd.DataFrame(
6 {
7 'Time': pd.date_range('2016/01/01 00:00', periods=N, freq='1Min'),
8 'Status_GTCC_Efficiency' : ['M','M','M','M','M','H','H','H','H','H','M','M','M','M','M','H','H','H','H','H']
9 }
10)
11df = df.set_index('Time')
12
13# データGroupIDをふる
14df['GroupID']= (df['Status_GTCC_Efficiency'].shift() != df['Status_GTCC_Efficiency']).cumsum()
15
16# 出力データ生成用関数
17def func(d):
18 return pd.Series({
19 'Start_Time':d.index[0],
20 'End_Time':d.index[-1],
21 'Duration': len(d),
22 'Status': d['Status_GTCC_Efficiency'][0]
23 })
24
25
26# GroupID によりグループ毎に上記の関数を適用する
27res = df.groupby('GroupID').apply(func).reset_index(drop=True)
28# 一応列順を整理
29res = res.loc[:,['Start_Time', 'End_Time', 'Duration', 'Status']]
30print(res)
31# Start_Time End_Time Duration Status
32#0 2016-01-01 00:00:00 2016-01-01 00:04:00 5 M
33#1 2016-01-01 00:05:00 2016-01-01 00:09:00 5 H
34#2 2016-01-01 00:10:00 2016-01-01 00:14:00 5 M
35#3 2016-01-01 00:15:00 2016-01-01 00:19:00 5 H