下面是我的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)
答案 0 :(得分:2)
这是一个长达9个月的问题,但仍显示在Google搜索此材料的顶部,因此可以接受。如果不需要此免责声明,我希望有人可以为我删除它。
二阶导数可以计算为中心,前向或后向导数,但是基于您的示例,我认为您正在寻找向后导数。如果需要,可以在每一行上进行计算,但是,使用diff()
可能真的很难。函数shift()
可以很好地工作,其方法如下:
df['A2'] = df['A'] - 2*df['A'].shift(1) + df['A'].shift(2)
该技术依赖于finite differences
答案 1 :(得分:1)
要了解您之间的差异,请致电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
的参数为期间,因此pd.Series.diff(2)
返回2个行之间的值和值之间的差。但这不是您想要的。