Расчет количества полных месяцев между двумя датами? - PullRequest
0 голосов
/ 13 января 2019

Первая и последняя даты временного ряда следующие:

firstday = transactions["Date"].head(1)
firstday
lastday = transactions["Date"].tail(1)
lastday

Dateindex
2017-12-30   2017-12-30
Name: Date, dtype: datetime64[ns]
Dateindex
2018-12-31   2018-12-31
Name: Date, dtype: datetime64[ns]

Я хочу следующие две вещи:

1) получить первый и последний день как "2017-12-30" и "2018-12-31" (строки) вместо dtype('<M8[ns]')

2) рассчитать количество полных месяцев между этими датами (правильный результат будет 12 месяцев)

Есть идеи, как этого достичь? Спасибо.

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Вот вам информация

firstdayStr = str(firstday[0])
lastdayStr = str(lastday[0])

months = (lastday[0].year - firstday[0].year) * 12 + lastday[0].month - firstday[0].month

вывод

2017-12-30 00:00:00  
2018-12-31 00:00:00  
12
0 голосов
/ 13 января 2019

Выберите первое и последнее значение с помощью Series.iat:

firstday = transactions["Date"].iat[0]
lastday = transactions["Date"].iat[-1]

Альтернативой является использование Index.get_loc для позиции для столбца Date с DataFrame.iat:

firstday = transactions.iat[0, transactions.columns.get_loc('Date')]
lastday = transactions.iat[-1, transactions.columns.get_loc('Date')]

print (firstday)
2017-12-30 00:00:00

print (lastday)
2018-12-31 00:00:00

Для разницы преобразуйте временную метку в месячный период на Timestamp.to_period и вычтите:

diff = lastday.to_period('m') - firstday.to_period('m')
print (diff)
12
...