Pandas - 计算至少 2 天前的时间序列增量

问题描述 投票:0回答:1

对于

pandas
数据框中的每一行,我想计算:与至少
n
(比如 2)天前的行相比,变化的分数是多少。我想使用
shift()
而不是
for
循环来实现这一点。下面的例子:

            x   change
Date        
2024-04-01  1   0.00000
2024-04-05  2   1.00000 # (2-1) / 1
2024-04-06  3   2.00000 # (3 - 1) / 1
2024-04-07  4   1.00000 # (4 - 2) / 2
2024-04-08  5   0.66666 # (5 - 3) / 3
2024-04-09  6   0.50000 # (6 - 4) / 4
python pandas numpy time-series
1个回答
0
投票

您可以使用

merge_asof

df.index = pd.to_datetime(df.index)

x2 = pd.merge_asof(df[[]], df[['x']].shift(freq='2D'),
                   left_index=True, right_index=True,
                   direction='backward'
                  )['x'].reindex(df.index)

df['change'] = (df['x']-x2)/x2

输出:

            x    change
Date                   
2024-04-01  1       NaN
2024-04-05  2  1.000000
2024-04-06  3  2.000000
2024-04-07  4  1.000000
2024-04-08  5  0.666667
2024-04-09  6  0.500000
© www.soinside.com 2019 - 2024. All rights reserved.