我有一个熊猫1D DataFrame (列:浮,值:浮),如下所示:
1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
0 1.0 2.0 5.0 4.0 3.0 NaN 1.0 7.0 NaN我想计算特定行范围的平均值。NaN应被视为0.0。例如,对于相对于整个列范围(1.0 - 1.2、1.3 - 1.5、1.6 - 1.9)的常数列范围,因此我想得到以下DataFrame:
1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
0 2.66 2.66 2.66 2.33 2.33 2.33 2.66 2.66 2.66实现这一目标的最具表现力和内存感知的实现是什么?
发布于 2019-10-28 12:08:07
如果希望每个列的每个值都有mean,那么将GroupBy.transform与axis='columns'一起使用,并按列的长度对np.arange进行整数除法,并将缺失的值替换为0:
df = df.fillna(0).groupby(np.arange(len(df.columns)) // 3, axis='columns').transform('mean')
print (df)
1.0 1.1 1.2 1.3 1.4 1.5 1.6 \
0 2.666667 2.666667 2.666667 2.333333 2.333333 2.333333 2.666667
1.7 1.8
0 2.666667 2.666667 细节
print (np.arange(len(df.columns)))
[0 1 2 3 4 5 6 7 8]
print (np.arange(len(df.columns)) // 3)
[0 0 0 1 1 1 2 2 2]https://stackoverflow.com/questions/58590632
复制相似问题