数据帧尾随统计信息

时间:2017-02-11 19:08:21

标签: python pandas numpy

问题:

是否有用于计算尾随统计信息的内置方法?

背景

滚动方法几乎看起来很完美,但我只能让它提供前滚而不是后退。我想计算第1列中1:4列的平均值,而不是第4列中的默认值。

我知道这可以通过一些操作和/或循环来完成(或者可能就像这个丢弃的列1:4一样),但是如果有一个简单的内置解决方案会很棒。

当前代码:

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(100, 110, size=(5, 10)),
                  columns=list([x for x in range(1, 11)]))

df

      1   2   3   4   5   6   7   8   9  10
0   106 108 104 108 108 109 105 102 106 102
1   105 106 107 102 100 106 106 100 101 103
2   103 101 102 100 107 105 106 100 107 105
3   104 104 107 109 105 106 108 107 109 100
4   103 100 101 106 101 102 101 100 103 100

df.rolling(window=4, axis=1).mean()

    1     2   3     4        5       6     7       8        9       10
0   NaN NaN NaN 106.5   107.00  107.25  107.5   106.0   105.50  103.75
1   NaN NaN NaN 105.0   103.75  103.75  103.5   103.0   103.25  102.50
2   NaN NaN NaN 101.5   102.50  103.50  104.5   104.5   104.50  104.50
3   NaN NaN NaN 106.0   106.25  106.75  107.0   106.5   107.50  106.00
4   NaN NaN NaN 102.5   102.00  102.50  102.5   101.0   101.50  101.00

1 个答案:

答案 0 :(得分:1)

pandas.DataFrame.shift()是否符合简单的内置解决方案

window_size = 4
df.rolling(window=window_size, axis=1).mean().shift(1-window_size, axis=1)

给出:

       1       2       3       4       5       6       7   8   9   10
0  106.00  106.75  107.50  107.25  106.75  105.25  103.50 NaN NaN NaN
1  104.25  105.75  106.00  107.25  105.75  104.25  104.25 NaN NaN NaN
2  102.50  102.25  103.75  103.75  105.00  104.00  102.50 NaN NaN NaN
3  104.00  105.75  105.25  105.25  107.25  106.25  104.75 NaN NaN NaN
4  107.75  105.50  104.25  102.75  103.00  103.75  105.00 NaN NaN NaN