问题:
是否有用于计算尾随统计信息的内置方法?
背景
滚动方法几乎看起来很完美,但我只能让它提供前滚而不是后退。我想计算第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
答案 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