使用shift()与不均匀间距的数据

2024-04-25 19:37:16 发布

您现在位置:Python中文网/ 问答频道 /正文

希望这个例子能说明问题。我想用shift()创建'lagval',但是如果缺少上一年,它需要是nan。在

df = DataFrame( { 'yr' : [2007,2008,2009,2011,2012],
                  'val': np.random.randn(5) } )

期望输出(lagval):

^{pr2}$

我有一个不错的解决方案(作为一个答案发布),但正在寻找替代方案。我已经花了一些时间来研究所有的时间序列函数,但这似乎有点过头了。似乎我最终会将年份转换为一个真正的时间戳,重新采样,移位,然后删除丢失的值。但也许有更简单的方法?在


Tags: 答案dataframedfshiftnp时间randomval
1条回答
网友
1楼 · 发布于 2024-04-25 19:37:16

不管怎样,这里有一个时间序列的解决方案,它显然需要更多的代码。在

df = df.set_index(df['yr'].apply(lambda x: datetime.datetime(x, 1, 1)))
df = df.resample('A').mean()

df['lagval'] = df['val'].shift(1)
df = df[pd.notnull(df['yr'])]

我不熟悉Stata,但只是浏览一下文档,听起来tsset做了类似的事情(将数据符合指定的频率)?在

相关问题 更多 >

    热门问题