【发布时间】:2020-05-31 17:42:37
【问题描述】:
对于以下数据框:
import pandas as pd
df = pd.DataFrame({
'dt':[
'2019-01-01',
'2019-01-02',
'2019-01-03',
'2020-01-01',
'2020-01-02',
'2020-01-03',
'2019-01-01',
'2019-01-02',
'2019-01-03',
'2020-01-01',
'2020-01-02',
'2020-01-03'
],
'foo': [1,2,3, 4,5,6, 1,5,3, 4,10,6],
'category': [1,1,1,1,1,1, 2,2,2,2,2,2]
})
如何找到每个类别上一年的滞后值?
df['dt'] = pd.to_datetime(df['dt'])
display(df)
移动索引只会返回一个空结果,因此分配失败。
df['last_year'] = df[df.dt == df.dt - pd.offsets.Day(365)]
显然,加入 2019 年的月份和日期的数据是可行的 - 但似乎更麻烦。有没有更好的办法?
编辑
想要的结果:
dt foo category last_year
2020-01-01 4 1 1
2020-01-02 5 1 2
2020-01-03 6 1 3
2020-01-01 4 2 1
2020-01-02 10 2 5
2020-01-03 6 2 3
【问题讨论】:
-
你的预期输出是什么?
标签: python pandas time-series lag shift