繁体   English   中英

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

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

问题 1:

您将如何计算熊猫数据base_date的起始日期( base_date变量)和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 + 季度并使用差异:

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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM