2016-09-18 2 views
1

Вот мой DataFrame:Как найти max в dataframe с определенной длиной в python?

DATE_TIME 
1997-02-25 12:50:00 3238.0 
1997-02-25 12:55:00 3237.5 
1997-02-25 13:00:00 3237.5 
1997-02-25 13:05:00 3237.5 
1997-02-25 13:10:00 3239.0 
1997-02-25 13:15:00 3242.0 

Я пытаюсь найти способ, чтобы найти максимум на каждые 2 интервала назад и до сих пор сохранить в формате DataFrame.

Поэтому я хотел бы, чтобы это выглядело так.

DATE_TIME 
1997-02-25 12:50:00 3238.0 
1997-02-25 12:55:00 3238.0 
1997-02-25 13:00:00 3238.0 
1997-02-25 13:05:00 3237.5 
1997-02-25 13:10:00 3239.0 
1997-02-25 13:15:00 3242.0 

Я пробовал различные вещи. Любая помощь будет принята с благодарностью.

ответ

1

вы можете использовать .rolling().max() метод:

In [141]: df 
Out[141]: 
      DATE_TIME  VAL 
0 1997-02-25 12:50:00 3238.0 
1 1997-02-25 12:55:00 3237.5 
2 1997-02-25 13:00:00 3237.5 
3 1997-02-25 13:05:00 3237.5 
4 1997-02-25 13:10:00 3239.0 
5 1997-02-25 13:15:00 3242.0 

In [142]: df['roll_3_max'] = df['VAL'].rolling(3).max().bfill() 

In [143]: df 
Out[143]: 
      DATE_TIME  VAL roll_3_max 
0 1997-02-25 12:50:00 3238.0  3238.0 
1 1997-02-25 12:55:00 3237.5  3238.0 
2 1997-02-25 13:00:00 3237.5  3238.0 
3 1997-02-25 13:05:00 3237.5  3237.5 
4 1997-02-25 13:10:00 3239.0  3239.0 
5 1997-02-25 13:15:00 3242.0  3242.0 

Объяснение:

In [140]: df['VAL'].rolling(3).max() 
Out[140]: 
0  NaN 
1  NaN 
2 3238.0 
3 3237.5 
4 3239.0 
5 3242.0 
Name: VAL, dtype: float64 
Смежные вопросы