Python Pandas:具有特定索引的重复for循环

Python Pandas:具有特定索引的重复for循环,python,pandas,Python,Pandas,我的数据框如下所示: time event 2019-01-01 01:27:00 crossing down 1 2019-01-01 01:36:00 crossing up 2 2019-01-01 01:42:00 crossing down 3 2019-01-01 01:55:00 crossing up 4 2019-01-01 01:58:00

我的数据框如下所示:

    time                 event  
  2019-01-01 01:27:00   crossing down           
1 2019-01-01 01:36:00   crossing up         
2 2019-01-01 01:42:00   crossing down           
3 2019-01-01 01:55:00   crossing up     
4 2019-01-01 01:58:00   crossing down   
5 2019-01-01 01:59:00   crossing up         
6 2019-01-01 02:00:00   crossing down       
7 2019-01-01 02:17:00   crossing up     
up_trend_time = (df.groupby((df['event'] == 'crossing down').cumsum())['time'].diff()
                   .dropna().dt.total_seconds().floordiv(60).tolist())

down_trend_time = (df.groupby((df['event'] == 'crossing up').cumsum())['time'].diff()
                     .dropna().dt.total_seconds().floordiv(60).tolist())

up_trend_time
[9.0, 13.0, 1.0, 17.0]

down_trend_time
[6.0, 3.0, 1.0]
我需要做的是计算趋势之间的平均时间(向下交叉到向上交叉“上升趋势”,或向上交叉到向下交叉“下降趋势”)。我需要的是一个所有上升趋势的数组,所以从2019-01-01 01:36:00交叉到2019-01-01:27:00交叉的时间,加上2019-01-01-01:55:00交叉到2019-01-01:42:00交叉的时间等等。。。。以及所有下降趋势的一个数组,因此在
1 2019-01-01 01:36:00交叉
2 2019-01-01 01:42:00交叉
之间的时间。。。到目前为止,我尝试的是:

for index,row in df_trend.iterrows():
    if df_trend.loc[0, 'event'] == 'crossing down':    
        up_trend_time = np.append(up_trend_time,(df_trend.loc[index+1, 'time'] - df_trend.loc[index, 'time']))

    elif df_trend.loc[0, 'event'] == 'crossing up':  
        down_trend_time = np.append(up_trend_time,(df_trend.loc[index+1, 'time'] - df_trend.loc[index, 'time']))
但是它没有给我预期的输出:数组
向上趋势时间=[9,7,1,17]
向下趋势时间=[6,3,1]
,有什么帮助吗?谢谢

另外,我的当前代码有以下错误:

'the label [1676] is not in the [index]'

你可以这样做:

    time                 event  
  2019-01-01 01:27:00   crossing down           
1 2019-01-01 01:36:00   crossing up         
2 2019-01-01 01:42:00   crossing down           
3 2019-01-01 01:55:00   crossing up     
4 2019-01-01 01:58:00   crossing down   
5 2019-01-01 01:59:00   crossing up         
6 2019-01-01 02:00:00   crossing down       
7 2019-01-01 02:17:00   crossing up     
up_trend_time = (df.groupby((df['event'] == 'crossing down').cumsum())['time'].diff()
                   .dropna().dt.total_seconds().floordiv(60).tolist())

down_trend_time = (df.groupby((df['event'] == 'crossing up').cumsum())['time'].diff()
                     .dropna().dt.total_seconds().floordiv(60).tolist())

up_trend_time
[9.0, 13.0, 1.0, 17.0]

down_trend_time
[6.0, 3.0, 1.0]