我有一个像这样的大熊猫1D DataFrame(列:float,值:float):
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
)我想获得以下数据帧作为结果:
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
什么是最高性能和内存意识的实现方式?
如果需要mean
每3个列值,则使用GroupBy.transform
withaxis='columns'
和整数除以np.arange
列长度,并将丢失的值替换为0
before:
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]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句