熊猫的日期时间:按星期几的年度比较

时间:2020-04-09 13:27:39

标签: python pandas datetime

我在DataFrame中有以日期时间为索引的数据。对于每个日期,我想将pct_change计算为上一年的数字。

import pandas as pd
import numpy as np
idx = pd.date_range('2019-01-01', periods=1000)
df = pd.DataFrame(np.arange(1000), index=idx)

但是,我要在同一天和同一月计算“上一年”。相反,我想将2020中的每一天与2019中具有相同星期几的第一天进行比较。我是什么意思?

在2020年,1月1日是星期三。在2019年,第一个星期三是1月2日。因此,每周的差异为[value at 2020-01-01]/[value at 2019-01-02]

因此,对于2020-2019年比较,我只需要知道+1的正偏移量即可,因此每次比较都需要[365-1]天。任何两年的通用解决方案是什么?

1 个答案:

答案 0 :(得分:1)

这可以做到:

s = df.groupby([df.index.year, df.index.dayofweek]).cumcount()
shifted = df.groupby([s, df.index.dayofweek]).shift()

shifted.loc['2020-01-01']
# 0    1.0
# Name: 2020-01-01 00:00:00, dtype: float64