我每个季度都有一个包含数据的数据框'
我希望上一季度的价值和我季度价值旁边的前四个季度(前一年)的价值。
最好的方法是什么:
我可以创建一个特定的功能,但它会很慢而且很脏
数据示例:
date store value
2014Q4 A 100
2014Q3 A 90
2014Q2 A 80
2014Q1 A 70
2013Q4 A 110
2013Q3 A 60
2013Q2 A 80
我想要这个:
date store value previous_q previous_y
2014Q4 A 100 90 110
2014Q3 A 90 80 60
2014Q2 A 80 70 80
2014Q1 A 70 110 :
2013Q4 A 110 60
2013Q3 A 60 80
2013Q2 A 80 :
答案 0 :(得分:2)
使用Shift。
http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.shift.html
import pandas as pd
index = ['14Q1','14Q2','14Q3','14Q4','15Q1']
df = pd.DataFrame({'A':range(16,21),'B':range(11,16)},index=index)
df['C'] = df.B.shift(1)
df['D'] = df.B.shift(4)
A B C D
14Q1 16 11 NaN NaN
14Q2 17 12 11 NaN
14Q3 18 13 12 NaN
14Q4 19 14 13 NaN
15Q1 20 15 14 11
编辑:删除了fillna(0)。保留NA是有道理的。