Панды получают количество дат - периодов на основе частоты между двумя датами / датами - PullRequest
0 голосов
/ 29 октября 2019

У меня есть два столбца с датами, и мне интересно, есть ли краткий способ получить число «периодов» (то есть «D», «W», «M», «Q», «Y») междудва из них без построения целого множества пользовательских отображений.

    first_transaction   order_date
0   2014-06-26  2014-06-29
1   2014-02-23  2015-01-09
2   2014-02-23  2014-02-23
3   2016-03-22  2016-03-22
4   2016-03-22  2017-10-20

Т.е. для частоты 'Q' идентификатор хотел бы получить

    first_transaction   order_date  res
0   2014-06-26  2014-06-29  0
1   2014-02-23  2015-01-09  4
2   2014-02-23  2014-04-23  1
3   2016-03-22  2016-08-22  2
4   2016-03-22  2017-10-20  7

1 Ответ

0 голосов
/ 29 октября 2019

Вы можете рассчитать разницу между двумя датами (после преобразования в дату) и вычислить соответствующую единицу измерения.

from math import ceil
import datetime
df = df.applymap(lambda x: datetime.datetime.strptime(x, '%m/%d/%y'))
df.apply(lambda y: ceil(((y['order_date'].year - y['first_transaction'].year)*12 + (y['order_date'].month - y['first_transaction'].month))/3), axis = 1)
...