Смещение даты Pandas Поле на основе другого поля - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть фрейм данных с полем time отметок времени с датами и другим столбцом period. Как я могу добавить количество дней к time на основе period?

Текущий вывод:

time                 period
------------------------------
2020-04-28 10:00:00  1
2020-04-27 12:34:56  3

Ожидаемый вывод

time
---------------
2020-04-29 10:00:00
2020-04-30 12:34:56

Если я попытаюсь df['time'] = df['time'] + pd.DateOffset(df['period']) Я получаю ошибку TypeError: n argument must be an integer, got <class 'pandas.core.series.Series'>, потому что он пытается передать весь столбец в функцию, которая ожидает целое число. Как это можно сделать?

1 Ответ

0 голосов
/ 28 апреля 2020

Поскольку дни могут быть преобразованы в timedeltas с помощью to_timedelta, можно использовать:

df['time'] = df['time'] + pd.to_timedelta(df['period'], unit='d')
print (df)
                 time  period
0 2020-04-29 10:00:00       1
1 2020-04-30 12:34:56       3

Но если хотите добавить, month s необходимо использовать:

df['time'] = df['time'] + df['period'].apply(lambda x: pd.DateOffset(months=x))
print (df)
                 time  period
0 2020-05-28 10:00:00       1
1 2020-07-27 12:34:56       3

При использовании month timedelatas работает с 'default month', поэтому точность отличается:

df['time'] = df['time'] + pd.to_timedelta(df['period'], unit='M')
print (df)
                 time  period
0 2020-05-28 20:29:06       1
1 2020-07-27 20:02:14       3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...