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

时间:2019-04-01 13:12:53

标签: python pandas datetime

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

我正在手动执行此操作,创建了一个新列Prev FY并将值上移4次以达到匹配值,并且它工作正常。

x = 4

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

有时丢失了四分之一的数据,因此移位4次不再起作用。我想改进代码,以便使用['Fiscal Quarter']列自动找到正确的行。

在这个问题上有帮助吗?

1 个答案:

答案 0 :(得分:0)

您需要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