Python 用“中的平均值”更新零值;";熊猫的相邻网格

Python 用“中的平均值”更新零值;";熊猫的相邻网格,python,pandas,Python,Pandas,我有一个txt文件,作为数据帧读取。对于某个SchoolID内的每个ClassID,我需要查看所有特征(即列F_1到F_7),并用每个列内相邻网格的n平均值替换每个零值。在做了一些研究并阅读了类似的帖子之后,比如,和,这就是我想到的: import pandas as pd data = pd.read_csv('School_Data.txt', error_bad_lines=False) groups = data['SchoolID'].unique() features = [2

我有一个txt文件,作为数据帧读取。对于某个
SchoolID
内的每个
ClassID
,我需要查看所有特征(即列
F_1
F_7
),并用每个列内相邻网格的
n
平均值替换每个零值。在做了一些研究并阅读了类似的帖子之后,比如,和,这就是我想到的:

import pandas as pd

data = pd.read_csv('School_Data.txt',  error_bad_lines=False)

groups = data['SchoolID'].unique()
features = [2,8]

output = []
for i in groups:
    for j in features:
        output=data.mask(data==0).fillna(data.mean())
问题是计算的是整个列的平均值,而不是每个
SchoolID
(为了解决这个问题,我尝试了
output=data[I].mask(data[I]=0).fillna(data[I].mean())
,但我得到了一个错误)。此外,我需要定义搜索半径
n
,以计算那些
n
相邻网格的平均值(例如,每个零值上方和下方的3行,当然在
SchoolID
内)。我还需要确保,一旦一个零值被更新,这个更新的值将不会用于计算其他零值的平均值

我将非常感谢您的帮助