Как округлить индекс даты и времени во фрейме данных панд? - PullRequest
0 голосов
/ 06 сентября 2018

Существует такой фрейм данных для панд:

index
2018-06-01 02:50:00     R 45.48 -2.8 
2018-06-01 07:13:00     R 45.85 -2.0  
... 
2018-06-01 08:37:00     R 45.87  -2.7

Я бы хотел округлить индекс до часа следующим образом:

index
2018-06-01 02:00:00     R 45.48 -2.8 
2018-06-01 07:00:00     R 45.85 -2.0  
... 
2018-06-01 08:00:00     R 45.87  -2.7

Я пытаюсь следующий код:

df = df.date_time.apply ( lambda x : x.round('H'))

но возвращает серию вместо кадра данных с измененным столбцом индекса

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Попробуйте это

df['index'].apply(lambda dt: datetime.datetime(dt.year, dt.month, dt.day, dt.hour,60*(dt.minute // 60)))
0 голосов
/ 06 сентября 2018

Попробуйте мой метод:

Добавить новый столбец по округленному значению часа:

df['E'] = df.index.round('H')

Установить в качестве индекса:

df1 = df.set_index('E')

Удалить имя, которое вы установили (здесь 'E'):

df1.index.name = None

А теперь df1 - это новый DataFrame с индексным часом, округленным от df.

0 голосов
/ 06 сентября 2018

Попробуйте использовать floor:

df.index.floor('H')

Установка:

df = pd.DataFrame(np.arange(25),index=pd.date_range('2018-01-01 01:12:50','2018-01-02 01:12:50',freq='H'),columns=['Value'])
df.head()
                    Value
2018-01-01 01:12:50 0
2018-01-01 02:12:50 1
2018-01-01 03:12:50 2
2018-01-01 04:12:50 3
2018-01-01 05:12:50 4

df.index = df.index.floor('H')
df.head()
                    Value
2018-01-01 01:00:00 0
2018-01-01 02:00:00 1
2018-01-01 03:00:00 2
2018-01-01 04:00:00 3
2018-01-01 05:00:00 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...