有没有直接的方法来计算pandas中数据帧列的平均值,但没有考虑零值作为值的数据?像.mean()函数中的参数一样? 目前这样做是这样的:
x = df[df[A]!=0]
x.mean()
答案 0 :(得分:16)
它还取决于数据中0的含义。
如果' 0'是一个未测量的值的占位符(即“NaN'”),那么更换所有' 0'事件 与' NaN'第一。默认情况下,平均值的计算不包括NaN 值。
df = pd.DataFrame([1, 0, 2, 3, 0], columns=['a'])
df = df.replace(0, np.NaN)
df.mean()
答案 1 :(得分:0)
您可以将df转换为numpy数组,并使用numpy.nanmean()
import numpy as np
df = pd.DataFrame(data=np.array([[1, 2],
[3, 4],
[6, 7],
[8, np.nan],
[np.nan, 11]]),
columns=['A', 'B'])
df_col_means = numpy.nanmean(df.values) # by columns
df_row_means = numpy.nanmean(df.values, axis=1) # by rows
col_A_mean = numpy.nanmean(df['A'].values) # particular column mean
答案 2 :(得分:-2)
在讨论中很晚,但是您也可以这样做:
df["Column_name"] != 0)].mean()