假设我有一个pd.DataFrame,想要计算滚动标准差。在pandas中,我可以使用rolling(window=x).std()
,但它会给我列的SD。然而,我想要给定行中所有列的标准差。
作为一个例子,考虑pd框架
df = pd.DataFrame({'col1': [1,2,3,4,5,6], 'col2': [-1,-2,-3,-4,-5,-6], 'col3': [1,2,3,4,5,6]})
df
col1 col2 col3
0 1 -1 1
1 2 -2 2
2 3 -3 3
3 4 -4 4
4 5 -5 5
5 6 -6 6
字符串
例如,当计算窗口大小为2时,我希望将第2行的标准差作为两行之和除以6(或6-1),所以:np.std([2,-2,2,1,-1,1])。
我试着在一个融化的格子上计算它,但我没有得到预期的结果:
df.reset_index().melt(id_vars='index').set_index('index')['value'].rolling(2).std()
型
有人知道怎么做吗?我很感激你的反馈。
2条答案
按热度按时间kdfy810k1#
字符串
输出:
型
out
是标准的。你说除以6或5,所以我不除以任何东西给你选择。
v8wbuo2f2#
在我看来,最有效的是使用numpy的
sliding_window_view
来形成一个3D中间体,并在其上使用std
(要知道numpy的std
默认有ddof=0
和pandasddof=1
):字符串
输出量:
作为新列:
型
输出量:
型