希望这个例子可以说明问题。我想用shift()创建“lagval”,但需要在前一年缺失时将其设置为nan。
df = DataFrame( { 'yr' : [2007,2008,2009,2011,2012],
'val': np.random.randn(5) } )
期望输出(lagval):
In [1118]: df
Out[1118]:
val yr lagval
0 -0.978139 2007 NaN
1 0.117912 2008 -0.978139
2 -1.031884 2009 0.117912
3 0.606856 2011 NaN
4 -0.200864 2012 0.606856
我有一个不错的解决方案(已发布为答案),但希望寻找其他选择。我花了一些时间查看了所有时间序列函数,但似乎在这里使用它们有点过头了。看起来我需要将年份转换为真正的时间戳,重新采样、偏移,然后删除缺失的值。但也许有更简单的方法?