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