使用熊猫从时间序列计算二阶导数.diff()

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

下面是我的Pandas数据框的示例,以日期作为索引:

            A
2019-01-09  1.007042
2019-01-10  1.007465
2019-01-11  1.007054
2019-01-12  1.007154
2019-01-13  1.007854
2019-01-14  1.008560

我想每两列A列确定二阶导数。为此确定两次在Pandas中使用.diff()函数是否合适?

df['A2'] = df['A'].diff(2).diff(2)
python pandas difference derivative differentiation
2个回答
1
投票

关于您之间的差异,请致电pd.Series.diff两次。

pd.Series.diff

df['A2'] = df['A'].diff().diff() print(df) A A2 2019-01-09 1.007042 NaN 2019-01-10 1.007465 NaN 2019-01-11 1.007054 -0.000834 2019-01-12 1.007154 0.000511 2019-01-13 1.007854 0.000600 2019-01-14 1.008560 0.000006 的参数是句点,因此pd.Series.diff返回2行之间的值和值之间的差。但这不是您想要的。


0
投票

这是一个长达9个月的问题,但仍显示在Google搜索此材料的顶部,因此值得接受。如果不需要此免责声明,我希望有人可以为我删除它。

二阶导数可以作为中心,前向或后向导数进行计算,但是基于您的示例,我认为您正在寻找向后导数。如果需要,可以在每一行上进行计算,但是使用pd.Series.diff(2)可能真的很难。函数diff()运行良好,但方法如下:

shift()

该技术依赖于df['A2'] = df['A'] - 2*df['A'].shift(1) + df['A'].shift(2)

© www.soinside.com 2019 - 2024. All rights reserved.