Панды: округление индекса времени до ближайшей 5-й минуты

У меня есть df с обычными временными метками в качестве индекса:

  2011-04-01 09:30:00 2011-04-01 09:30:10 ... 2011-04-01 09:36:20 ... 2011-04-01 09:37:30 

Как создать столбец для этого фреймворка с той же меткой времени, но округленный до ближайшего 5-минутного интервала? Как это:

  index new_col 2011-04-01 09:30:00 2011-04-01 09:35:00 2011-04-01 09:30:10 2011-04-01 09:35:00 2011-04-01 09:36:20 2011-04-01 09:40:00 2011-04-01 09:37:30 2011-04-01 09:40:00 

3 Solutions collect form web for “Панды: округление индекса времени до ближайшей 5-й минуты”

Решение round_to_5min(t) использующее арифметику timedelta является правильным, но сложным и очень медленным. Вместо этого используйте красивую Timstamp в Timstamp :

 import numpy as np import pandas as pd ns5min=5*60*1000000000 # 5 minutes in nanoseconds pd.to_datetime(((df.index.astype(np.int64) // ns5min + 1 ) * ns5min)) 

Давайте сравним скорость:

 rng = pd.date_range('1/1/2014', '1/2/2014', freq='S') print len(rng) # 86401 # ipython %timeit %timeit pd.to_datetime(((rng.astype(np.int64) // ns5min + 1 ) * ns5min)) # 1000 loops, best of 3: 1.01 ms per loop %timeit rng.map(round_to_5min) # 1 loops, best of 3: 1.03 s per loop 

Примерно в 1000 раз быстрее!

Вы можете попробовать что-то вроде этого:

 def round_to_5min(t): delta = datetime.timedelta(minutes=t.minute%5, seconds=t.second, microseconds=t.microsecond) t -= delta if delta > datetime.timedelta(0): t += datetime.timedelta(minutes=5) return t df['new_col'] = df.index.map(round_to_5min) 

У меня была та же проблема, но с datetime64p [ns] timestamps.

Я использовал:

 def round_to_5min(t): """ This function rounds a timedelta timestamp to the nearest 5-min mark""" t = datetime.datetime(t.year, t.month, t.day, t.hour, t.minute - t.minute%5, 0) return t 

а затем функция «карта»

  • Pandas: как получить уникальное количество значений в ячейках, когда ячейки содержат списки?
  • Как фильтровать строки в pandas с помощью регулярных выражений
  • SQL-подобные функции окна в PANDAS: Нумерация строк в Python Pandas Dataframe
  • Запретить пандам интерпретировать «NA» как NaN в строке
  • Pandas записывает данные в файл CSV
  • Преобразование строки в столбец в Python Pandas
  • При использовании pandas.to_datetime сохранять только дату.
  • эффективно заменить значения из столбца в другой столбец Pandas DataFrame
  • Python - лучший язык программирования в мире.