Как преобразовать прогрессию минут в дате в Python - PullRequest
1 голос
/ 04 августа 2020

Я открываю файл .CSV и загружаю его в фрейм данных. Первый столбец - 'TIME [minutes]'. Каждые 30 минут у меня есть второй столбец 'Temperature'... одна строка каждые 30 минут в течение всего года!

Итак, я начинаю с 0, затем 30, затем 60 ... и заканчиваю sh с 527010. Теперь мне нужно преобразовать эти минуты в конкретную дату c (начиная с 1-01-2019 и заканчивая 12-31-2019), чтобы я мог агрегировать и анализировать данные за неделю, месяц, дни и т. Д. c.

1 Ответ

1 голос
/ 04 августа 2020

Вы можете попробовать pd.to_timedelta(values, unit='m') и добавить дату начала. Пример:

import pandas as pd
import numpy as np

df = pd.DataFrame(
    data=dict(
        minutes=np.arange(10)*30,
        temp=np.random.normal(size=10),
    ))

origin = pd.Timestamp('2019-01-01')

df['t'] = origin + pd.to_timedelta(df['minutes'], unit='m')
df.set_index('t')

Out[ ]:
                     minutes      temp
t                                     
2019-01-01 00:00:00        0  0.072195
2019-01-01 00:30:00       30 -1.744107
2019-01-01 01:00:00       60  0.847826
2019-01-01 01:30:00       90 -1.434030
2019-01-01 02:00:00      120  1.831201
2019-01-01 02:30:00      150 -0.198310
2019-01-01 03:00:00      180  1.430119
2019-01-01 03:30:00      210  0.104412
2019-01-01 04:00:00      240  1.786200
2019-01-01 04:30:00      270  0.776551

Примечание: в приведенном выше примере используются простые временные метки. Если вам нужно выполнять свою работу с учетом часового пояса, просто измените свое происхождение как таковое. Вот еще один пример:

df = pd.DataFrame(
    data=dict(
        minutes=np.arange(10) * 30,
        temp=np.random.normal(size=10),
    ))

origin = pd.Timestamp('2019-03-09 23:15:00', tz='America/Los_Angeles')

df.assign(date=origin + pd.to_timedelta(df['minutes'], unit='m')).set_index('date')

Out[ ]:
                           minutes      temp
date                                        
2019-03-09 23:15:00-08:00        0  1.467329
2019-03-09 23:45:00-08:00       30 -0.645978
2019-03-10 00:15:00-08:00       60 -0.673867
2019-03-10 00:45:00-08:00       90 -0.133427
2019-03-10 01:15:00-08:00      120 -0.888888
2019-03-10 01:45:00-08:00      150 -0.626973
2019-03-10 03:15:00-07:00      180  1.613762
2019-03-10 03:45:00-07:00      210  0.314589
2019-03-10 04:15:00-07:00      240 -0.100282
2019-03-10 04:45:00-07:00      270  0.447192

Обратите внимание, как он переключается с PST на PDT в соответствии с правилами этого часового пояса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...