python Pandas : Finding derivatives from Dataframe

标签 python pandas

我的数据框看起来像这样:

                     date     time   sym        ask0        ask1        ask2  
0     2017-08-21 07:00:00 07:00:00   7YR  100.812500  100.828125  100.843750   
1     2017-08-21 07:00:15 07:00:15   7YR  100.812500  100.828125  100.843750   
2     2017-08-21 07:00:30 07:00:30   7YR  100.812500  100.828125  100.843750   
3     2017-08-21 07:00:45 07:00:45   7YR  100.812500  100.828125  100.843750   
4     2017-08-21 07:01:00 07:01:00   7YR  100.812500  100.828125  100.843750   
5     2017-08-21 07:01:15 07:01:15   7YR  100.812500  100.828125  100.843750   
6     2017-08-21 07:01:30 07:01:30   7YR  100.812500  100.828125  100.843750   
7     2017-08-21 07:01:45 07:01:45   7YR  100.812500  100.828125  100.843750   
8     2017-08-21 07:02:00 07:02:00   7YR  100.812500  100.828125  100.843750   
9     2017-08-21 07:02:15 07:02:15   7YR  100.812500  100.828125  100.843750   
10    2017-08-21 07:02:30 07:02:30   7YR  100.812500  100.828125  100.843750   
11    2017-08-21 07:02:45 07:02:45   7YR  100.828125  100.843750  100.859375   
12    2017-08-21 07:03:00 07:03:00   7YR  100.812500  100.828125  100.843750   
13    2017-08-21 07:03:15 07:03:15   7YR  100.828125  100.843750  100.859375   
14    2017-08-21 07:03:30 07:03:30   7YR  100.828125  100.843750  100.859375   
15    2017-08-21 07:03:45 07:03:45   7YR  100.828125  100.843750  100.859375   
16    2017-08-21 07:04:00 07:04:00   7YR  100.828125  100.843750  100.859375   
17    2017-08-21 07:04:15 07:04:15   7YR  100.828125  100.843750  100.859375   
18    2017-08-21 07:04:30 07:04:30   7YR  100.828125  100.843750  100.859375   
19    2017-08-21 07:04:45 07:04:45   7YR  100.828125  100.843750  100.859375   
20    2017-08-21 07:05:00 07:05:00   7YR  100.828125  100.843750  100.859375   
21    2017-08-21 07:05:15 07:05:15   7YR  100.828125  100.843750  100.859375   
22    2017-08-21 07:05:30 07:05:30   7YR  100.828125  100.843750  100.859375 

我想计算导数: d = d(ask0)/dt

其中 dt = 2 分钟。

例如,

t = 2017-08-21 07:04:30 07:04:30    ask@t=100.828125 
t-1 =  2017-08-21 07:04:30 07:02:30  ask@t-1=100.812500
dask/dt = (100.828125-100.812500)/2 = 0.0078125

我知道我可以通过迭代数据框中的每一行来做到这一点。

但我想知道是否有一个 Pandas 函数可以完成这项工作。

最佳答案

第一步是确保 datedatetime

df.date = pd.to_datetime(df.date)

解决方案

df.set_index('date').ask0.rolling('121s').apply(lambda x: x[-1] - x[0]) / 2

date
2017-08-21 07:00:00    0.000000
2017-08-21 07:00:15    0.000000
2017-08-21 07:00:30    0.000000
2017-08-21 07:00:45    0.000000
2017-08-21 07:01:00    0.000000
2017-08-21 07:01:15    0.000000
2017-08-21 07:01:30    0.000000
2017-08-21 07:01:45    0.000000
2017-08-21 07:02:00    0.000000
2017-08-21 07:02:15    0.000000
2017-08-21 07:02:30    0.000000
2017-08-21 07:02:45    0.007812
2017-08-21 07:03:00    0.000000
2017-08-21 07:03:15    0.007812
2017-08-21 07:03:30    0.007812
2017-08-21 07:03:45    0.007812
2017-08-21 07:04:00    0.007812
2017-08-21 07:04:15    0.007812
2017-08-21 07:04:30    0.007812
2017-08-21 07:04:45    0.000000
2017-08-21 07:05:00    0.007812
2017-08-21 07:05:15    0.000000
2017-08-21 07:05:30    0.000000
Name: ask0, dtype: float64

关于 python Pandas : Finding derivatives from Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46105315/

相关文章:

python - 如何防止 Django Admin 覆盖自定义字段的自定义小部件?

python - Pandas 数据框中的矢量化字符串操作

python - 在 python 中声明文件夹路径的正确方法是什么?

python - 无法在 El Capitan (10.11) 中安装 Pip 包

python - 从 ubuntu 上的 python eclipse 项目导出可运行程序

python - 连接、pandas 和 join_axes

python-3.x - 如何在 pandas 数据框中用用户定义的值填充 NaN

python - 为 pandas 数据框的一列着色 : change in format

python - 使用 append 从另外两个创建 pandas dataFrame

python - Jaxlib pip 安装失败