我有一个txt文件here,我正在将其作为熊猫数据框读取。对于某个ClassID
中的每个SchoolID
,我需要查看所有功能(即列F_1
至F_7
),并将每个零值替换为的平均值每列中的n
个相邻网格。经过研究并阅读了类似的帖子,例如here,here和here之后,我得出了以下结论:
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
个相邻网格的平均值(例如,SchoolID
中每个零值上方和下方的3行)。我还需要确保一旦更新了零值,此更新后的值就不会用于计算其他零值的平均值。
在此方面,我将不胜感激。