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:
如果 x
和 y
变量现在设置为 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)
您可以轻松地将其扩展到您的特定应用程序。
问题 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:
如果 x
和 y
变量现在设置为 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)
您可以轻松地将其扩展到您的特定应用程序。