首页 > 解决方案 > 用熊猫分组行时如何屏蔽值?

问题描述

我想获取文件中每 7 行列的平均值,不包括平均值特定值(即 9999 和 0)

该文件的样本是

1 567
2 -9999
3 98
4 77
5 0 
6 89
7 77
8 567
9 -9999
10 87
11 0
12 10 
13 79
14 75

我得到每 7 行的平均值如下:

df=pd.read_csv(e,sep='\t',usecols=[1],skiprows=(0),header=None)
data_mean=df.groupby(np.arange(len(df))//7).mean() 
data_mean.index=data_week.index+1
data_mean.to_csv(outfile,sep="\t",header=False)

如果我只想获得整列的平均值并使用我会做的掩码

data_mean = df.mask(df.isin([-9999, 0])).mean(1) #to exclude 0 and -9999 

我如何在第一个代码中使用掩码?

标签: pythonpandasmask

解决方案


您可以将 -9999 和 0 替换为 NaN:

df[df.isin([-9999, 0])] = np.NaN

然后应用您的第一个代码:

>>> df.groupby(np.arange(len(df))//7).mean()
       1
0  181.6
1  163.6

推荐阅读