我有这个数据集,其中['Sales']
个值由['Fiscal Quarter']
以YYYY-Qx
格式分组。我想将一个季度的值与上一年的同一季度进行比较(例如,2019-Q2与2018-Q2)。
我正在手动执行此操作,创建了一个新列Prev FY
并将值上移4次以达到匹配值,并且它工作正常。
x = 4
df['Prev FY'] = df['Sales'].shift(x)
有时丢失了四分之一的数据,因此移位4次不再起作用。我想改进代码,以便使用['Fiscal Quarter']
列自动找到正确的行。
在这个问题上有帮助吗?
答案 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