【发布时间】:2019-02-27 11:39:24
【问题描述】:
我在数据框中有一列,每行包含一系列不同大小的列:
values
[0.0,2.3,4.6,99,100,200,...]
[0.0,4.6,7.8,10,20,25,10,5.5,12,...]
.
.
.
我计算了每个系列的平均值如下:
from statistics import mean
df['average_values'] = df['values'].map(mean)
df.head()
这会返回:
values average_values
[0.0,2.3,4.6,99,100,200,...] 7.6
[0.0,4.6,7.8,10,20,25,...] 10.5
.
.
.
但是,这些系列中的每一个都以 0.0 开头,我需要从平均列的计算中删除它。
我的尝试
我尝试创建一个新列“nan_values”,它将复制原始值列,但所有 0.0 值都替换为 NaN:
#create new column
df['nan_values'] = df['values'].copy()
#replace the 0.0 in each series with NaN
df['nan_values'] = df['nan_values'].replace(0, np.NaN)
我想我会产生一个看起来像这样的系列:
[NaN, 2.2, 4.4, 5, 3.3, 7.1, ...]
我需要计算多行系列的平均值,但在索引 0 处跳过元素。
【问题讨论】:
-
您不能将平均值乘以 $n / (n-1)$,其中 $n$ 是行的长度(包括 0.0)吗?