Как я могу преобразовать часы дня и минуты в дату и время? - PullRequest
0 голосов
/ 23 января 2020

У меня есть полный год данных каждую минуту:

dayofyear   hourofday   minuteofhour    
1            0           0  
.
.
365          23         57  
365          23         58 
365          23         59  

Я преобразовал dayofyear в дату:

df['date']=pd.to_datetime(df['dayofyear'], unit='D', origin=pd.Timestamp('2009-12-31'))

    dayofyear   hourofday   minuteofhour    date
1   0   0 2010-01-01
1   0   1 2010-01-01
1   0   2 2010-01-01
1   0   3 2010-01-01
1   0   4 2010-01-01

Как я могу объединить hourofday и minuteofhour с date, чтобы создать правильную временную метку?

Примерно так: '2010-12-30 19:00:00'

, чтобы я мог выполнять другое время -фильтрация / поднабор и т. д. c в pandas позже.

Ответы [ 2 ]

1 голос
/ 23 января 2020

Преобразуйте столбцы hourofday и minuteofhour в TimeDelta, затем добавьте его в столбец date:

df['timestamp'] = df['date'] + pd.to_timedelta(df['hourofday'].astype('str') + ':' + df['minuteofhour'].astype('str') + ':00')
0 голосов
/ 23 января 2020
import pandas as pd
from datetime import datetime, timedelta


df = pd.DataFrame({
    'dayofyear': (365, ),
    'hourofday': (23, ),
    'minuteofhour': (57, ),
})


def parse_dt(x):
    dt = datetime(2010, 1, 1) + timedelta(int(x['dayofyear']) - 1)
    dt = dt.replace(hour=x['hourofday'], minute=x['minuteofhour'])
    x['dt'] = dt
    return x


df = df.apply(parse_dt, axis=1)
print(df)

#   dayofyear  hourofday  minuteofhour                  dt
#0        365         23            57 2010-12-31 23:57:00

Надеюсь, это поможет

...