2

问题一:

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

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:

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

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

2 回答 2

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)

只需在第一个问题中,您就会得到一个简单的系列,而这里是一个索引......

于 2020-02-18T10:20:39.920 回答
1

这是使用 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)

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

于 2021-02-22T02:17:20.780 回答