我有一个看起来像这样的数据框:
epochseconds midPrice midPrice_1
0 1570780800 2954.625 NaN
1 1570780800 2954.625 NaN
2 1570780800 2954.625 NaN
3 1570780800 2954.625 NaN
4 1570780800 2954.625 NaN
5 1570780800 2954.625 NaN
6 1570780800 2954.875 NaN
7 1570780800 2954.875 NaN
epochseconds midPrice midPrice_1
24 1570780801 2954.875 NaN
25 1570780801 2954.875 NaN
26 1570780801 2954.875 NaN
27 1570780801 2954.875 NaN
28 1570780801 2954.875 NaN
29 1570780801 2954.875 NaN
30 1570780801 2954.875 NaN
31 1570780801 2955.000 NaN
每个星期都有不同数量的观察值。我想预测下一个中间价为epochsecond + 1。我想应用pandas.DataFrame.shift,但是这没有考虑到我每秒都有不同的观察结果。有没有一种方法可以将周长的平均值:1570780801应用于周长的所有观测值:1570780800。我总共有868471秒,因此该代码应应用于所有观察结果。
有人知道怎么做这个吗?
欢迎使用Stack Overflow。
您可以使用groupby
函数,然后计算shift
(相差-1,因为您希望将当前纪元的平均值应用于前一个纪元),从而计算同一纪元的所有观测值的平均值。
然后,对原始数据框进行左连接。
df_mean_shifted = df.groupby('epochseconds')['midPrice'].mean().shift(-1).rename('midPrice_1')
df.merge(df_mean_shifted, left_on='epochseconds', right_index=True)
这将为您提供所需的内容,但是您必须决定如何在最后一个epochsecond内填写条目,该条目将为null(因为shift
)。
epochseconds midPrice midPrice_1
0 1570780800 2954.625 2954.890625
1 1570780800 2954.625 2954.890625
2 1570780800 2954.625 2954.890625
3 1570780800 2954.625 2954.890625
4 1570780800 2954.625 2954.890625
5 1570780800 2954.625 2954.890625
6 1570780800 2954.875 2954.890625
7 1570780800 2954.875 2954.890625
24 1570780801 2954.875
25 1570780801 2954.875
26 1570780801 2954.875
27 1570780801 2954.875
28 1570780801 2954.875
29 1570780801 2954.875
30 1570780801 2954.875
31 1570780801 2955.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句