Вычитание таймделты в pandas - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть фрейм данных с двумя столбцами (дата и дни).

    df = pd.DataFrame({'date':[2020-01-31, 2020-01-21, 2020-01-11], 'days':[1, 2, 3]})

Я хочу иметь третий столбец (date_2), для которого необходимо вычесть количество дней из даты. Следовательно, date_2 будет [2020-01-30, 2020-01-19, 2020-01-8].

Я знаю timedelta(days = i), но я не могу дать ему содержание df['days'] как i в pandas.

Ответы [ 2 ]

4 голосов
/ 25 февраля 2020

Используйте to_timedelta с unit=d и вычтите

>>pd.to_datetime(df['date'])-pd.to_timedelta(df['days'],unit='d')

0   2020-01-30
1   2020-01-19
2   2020-01-08
dtype: datetime64[ns]
4 голосов
/ 25 февраля 2020

Используйте to_datetime для даты и вычтите на Series.sub с временной шкалой, созданной to_timedelta:

df['new'] = pd.to_datetime(df['date']).sub(pd.to_timedelta(df['days'], unit='d'))
print (df)
         date  days        new
0  2020-01-31     1 2020-01-30
1  2020-01-21     2 2020-01-19
2  2020-01-11     3 2020-01-08
...