PYTHON:如何计算两个日期之间的季度数

PYTHON: how to count the number of quarters between two dates

问题 1:

您如何计算开始日期(base_date 变量)和 pandas 数据框中的 y 列之间的季度数?

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:

如果 xy 变量现在设置为 pandas 数据帧多级索引。您将如何执行与问题 1 相同的任务?

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

问题 1:

一年包含 4 个季度。计算日期之间季度差异的一种简单方法是将它们转换为 year * 4 + quarter 并使用差异:

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)

只是在第一个问题中你得到一个普通的系列,而这里是一个索引...

这是使用 pandas 内置周期差分的一种非常巧妙的方法:

import pandas as pd
t = pd.to_datetime('2025Q4').to_period(freq='Q')-pd.to_datetime('1850Q2').to_period(freq='Q')
print(t.n)

您可以轻松地将其扩展到您的特定应用程序。