Управление меткой времени, так что новая метка времени остается в силе - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть фрейм данных pandas, в котором каждая ячейка столбца содержит временную метку, сохраненную в виде строки:

>>>dataset['DateTime'][1]
'2018-03-14 00:34:46'

Я хотел бы создать новый столбец, в котором эти даты обрабатываются в следующемпуть:

год + = 1,

месяц + = 2,

день + = 3,

час + = 4,

минута + = 5,

секунда + = 6

(Важным для этой манипуляции является то, что начальная дата и новая дата имеют отношение один к одному, поэтому я могупреобразовать дату позже позже)

В моем случае вывод, который я ищу, выглядит следующим образом:

>>> dataset['newTimestamp'][1]
'2019-05-17 04:39:52'

Для этого я использую библиотеку datetime для создания даты и времениобъекты (в качестве теста я сначала начал с одной переменной):

timestamp = dataset['DateTime'][1]
p = datetime.datetime.strptime(timestamp, "%Y-%m-%d %H:%M:%S")

В настоящее время я делаю арифметику для отдельных переменных:

year = p.year + 1

if p.month < 12:
    month = p.month + 1
else:
    month = 1
    year += 1

Однако, как и в месяцах,Существуют исключения, когда вы можете и когда вы не можете добавить значения, так что новая временная метка все еще является реальной временной меткой (12 + 1 = 13, что равно nне фактический месяц).

Я мог бы явно программировать каждое правило, но это кажется слишком большой работой, и я ожидаю, что есть лучшие способы.Как я мог сделать это быстрее?

Ответы [ 3 ]

2 голосов
/ 29 апреля 2019

Использование DateOffset.
Также взгляните на относительный модуль для такого рода манипуляций:

dataset['newTimestamp'] = pd.to_datetime(dataset['DateTime']) + pd.DateOffset(years=1, months=2, days=3, hours=4, minutes=5, seconds=6)
0 голосов
/ 29 апреля 2019

strptime () и strftime () - это функции, которые вы ищете.Просто идите и погуглите две функции.конечно же, вы будете в состоянии решить заявленную проблему.они могут использоваться для прямого манипулирования датой и временем

0 голосов
/ 29 апреля 2019

Вы должны попробовать Beautiful-Date Библиотека:

pip install beautiful-date

И используйте это так:

from beautiful_date import *

...

dataset['DateTime'].apply(lambda d: d + 1 * years + 2 * months + ... + 6 * seconds)

должен сделать трюк.

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