擅长:python、mysql、java
<p>如果索引类型为<code>DateTimeIndex</code>或<code>TimedeltaIndex</code>,则<code>df.rolling</code>和<code>series.rolling</code>允许基于值的窗口。您可以使用此选项接近所需的结果:</p>
<pre><code>df = df.set_index(pd.TimedeltaIndex(df[0]*1e9))
df["rolling_mean"] = df[1].rolling("1s").mean()
df = df.reset_index(drop=True)
</code></pre>
<p>输出:</p>
<pre><code> 0 1 rolling_mean
0 4.5 10 10.000000
1 4.6 11 10.500000
2 4.8 9 10.000000
3 5.5 6 8.666667
4 5.6 6 7.000000
5 8.1 10 10.000000
6 8.2 13 11.500000
</code></pre>
<p><strong>优势</strong>
这是一个三线解决方案,应具有良好的性能,充分利用datetime后端</p>
<p><strong>缺点</strong>
这绝对是一个错误,将英里列转换为时间增量秒,并且平均值不居中(<code>center</code>不适用于datetimelike和基于偏移量的窗口)</p>
<p>总的来说:如果你重视绩效,并且能够接受一种不以中心为中心的方式,那么这将是一个很好的评论方式</p>