如何以 YYYY-Qx 格式查找上一年的匹配值



我有这个数据集,其中['Sales']值按['Fiscal Quarter']YYYY-Qx格式分组。我想将一个季度的价值与上一年的同一季度(例如,2019-Q2 与 2018-Q2(进行比较。

我以手动方式执行此操作,创建一个新的列Prev FY并将值向上移动 4 次以获得匹配值,并且工作正常。

x = 4

df['Prev FY'] = df['Sales'].shift(x)

有时某些季度数据丢失,因此换档 4 次不再有效。我想改进代码以使用 ['Fiscal Quarter'] 列自动找到正确的行。

关于这个问题有什么帮助吗?

您需要PeriodIndex,然后在Series.shift中使用参数freq

df = pd.DataFrame({'Fiscal Quarter':['2017-Q2','2018-Q2','2019-Q1','2019-Q2'],
                   'Sales':[10,20,30,40]})
df['Fiscal Quarter'] = pd.to_datetime(df['Fiscal Quarter']).dt.to_period('Q')
df = df.set_index('Fiscal Quarter')
df['Prev FY'] = df['Sales'].shift(4, freq='Q')
print (df)
                Sales  Prev FY
Fiscal Quarter                
2017Q2             10      NaN
2018Q2             20     10.0
2019Q1             30      NaN
2019Q2             40     20.0

最新更新