我有这个数据集,其中['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