PYTHON: как посчитать количество кварталов между двумя датами - PullRequest
0 голосов
/ 18 февраля 2020

Вопрос 1:

Как бы вы посчитали количество кварталов между начальной датой (переменная base_date) и столбцом y в кадре данных pandas?

from dateutil.relativedelta import relativedelta
import pandas as pd
import numpy as np

base_date=pd.to_datetime('07/01/2019')
fake_data=pd.DataFrame([(x,pd.to_datetime('04/01/2020')+relativedelta(months=y)) for x in list(range(0,100)) for y in list(range(0,100))],columns=['x','y'])
fake_data['z']=fake_data['x']*np.random.uniform(low=1,high=1000)

ОБНОВЛЕНИЕ: кажется, что один из вариантов работает для вопроса 1:

fake_data['month_diff']=(fake_data['y'].dt.year-base_date.year)*12+fake_data['y'].dt.month-base_date.month
fake_data['quarter']=(fake_data['month_diff']/3).astype(int)

Вопрос 2:

Если переменные x и y теперь установлены в pandas мультифрейм данных Индекс Как бы вы выполнили ту же задачу, что и в вопросе 1?

fake_data.set_index(['x','y'],drop=True,inplace=True)

1 Ответ

1 голос
/ 18 февраля 2020

Вопрос 1:

Год содержит 4 квартала. Простой способ подсчёта разницы кварталов между датами - это преобразовать их в год * 4 + квартал и использовать разницу:

fake_data.y.dt.year * 4 + fake_data.y.dt.quarter - (base_date.year * 4 + base_date.quarter)

Вопрос 2:

Предыдущий метод все еще применяется, но на index.levels[1]:

fake_data.index.levels[1].year * 4 + fake_data.index.levels[1].quarter - (base_date.year * 4 + base_date.quarter)

Просто в первом вопросе вы получите простую серию, а здесь это индекс ...

...