我有一个熊猫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。列范围没有常量列计数w.r.t。整个列范围(1.0 - 1.2、1.3 - 1.5、1.6 - 1.9),但列计数不同。整体列范围,例如1.0 - 1.3 (4 cols)、1.4 - 1.7 (4 cols)、1.8 (1列)。因此,我想得到以下DataFrame:
1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
0 3.00 3.00 3.00 3.00 2.75 2.75 2.75 2.75 0.00实现这一目标的最具表现力和内存感知的实现是什么?
发布于 2019-10-29 10:24:29
方法1-楼层划分//
此方法假定要groupby的列范围相等,在本例中,每4列一列。
df.fillna(0).groupby(np.arange(df.shape[1]) // 4, axis='columns').transform('mean')
1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
0 3.0 3.0 3.0 3.0 2.75 2.75 2.75 2.75 0.0方法2- np.digitize
在这里,我们可以创建列到groupby的海关groupby
bins = np.array([1, 1.4, 1.8])
grps = np.digitize(df.columns, bins)
df.fillna(0).groupby(grps, axis='columns').transform('mean')
1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
0 3.0 3.0 3.0 3.0 2.75 2.75 2.75 2.75 0.0https://stackoverflow.com/questions/58605358
复制相似问题