Добавьте количество дней к дате / дате / времени (Pandas / Numpy) - PullRequest
0 голосов
/ 10 мая 2018

В Pandas я бы хотел добавить количество дней к дате / дате / времени (два столбца).

Пример:

dates = pd.Series(pd.date_range("20180101 00:00", "20180104 00:00"))

0   2018-01-01
1   2018-01-02
2   2018-01-03
3   2018-01-04
dtype: datetime64[ns]

days = pd.Series(np.arange(4)).astype('float')

0    0.0
1    1.0
2    2.0
3    3.0
dtype: float64

Что я пробовал (и получаю соответствующую ошибку):

dates + days

TypeError: не может работать с серией без rhs серии / ndarray типа datetime64 [ns] или timedelta

dates + days.astype('int')

TypeError: несовместимый тип для операции datetime / timedelta [__add __]

dates + pd.DateOffset(days=days)

TypeError: DatetimeIndex не может выполнить операцию +

dates + np.timedelta64(days.values)

ValueError: Не удалось преобразовать объект в NumPy timedelta

dates + pd.offsets.Day(days)

TypeError: невозможно преобразовать серию в

dates + pd.datetools.timedelta(days=days)

TypeError: неподдерживаемый тип для компонента timedelta days: Series

1 Ответ

0 голосов
/ 10 мая 2018

Наконец-то я нашел два метода!:

dates + pd.to_timedelta(days, unit='D') 

или

dates + pd.TimedeltaIndex(days, unit='D')

Которые оба производят:

0   2018-01-01
1   2018-01-03
2   2018-01-05
3   2018-01-07
dtype: datetime64[ns]

(Потребовалась целая вечность, чтобы найти соответствующую документацию: https://pandas.pydata.org/pandas-docs/stable/timedeltas.html#to-timedelta)

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