pandas 扩展操作:横截面统计窗口大小的限制

问题描述

我注意到 pandas 的 expanding 函数中有一个奇怪的行为;说我有一个简单的数据框:

n_rows = 3
n_cols = n_rows+2
df = pd.DataFrame(np.random.randint(0,10,(n_rows,n_cols)))

#my particular df: 
#df = 
#    [[8,1,7,7],#     [7,5,4],#     [3,0]]

现在我希望扩展平均操作的最后一列等于完整的横截面平均值:

pd.concat((df.expanding(axis=1).mean(),df.mean(1).rename('Full mean')),1)

#the output: 
#     0   1        2      3       4     Full mean
#0  8.0 4.5 5.333333    5.0 7.000000    6.0
#1  7.0 4.0 2.666667    2.0 3.000000    3.4
#2  3.0 5.0 5.666667    7.0 4.666667    4.8

如我们所见,“全均值”列不等于列 id 4。相反,我们观察到的是 expanding 操作期间横截面平均的最大窗口大小限制为 { {1}}。

因此,我们在第 4 列的第一行中得到 (7+7+7)/3,而不是 (8+1+7+7+7)/5。

可以通过将 n_rows 截断为方形结构来验证窗口大小的上界:

df

为什么窗口大小对行数有这样一个上限,如何消除这个限制?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)