我正在研究kaggle竞赛中的NFL数据:https://www.kaggle.com/c/nfl-playing-surface-analytics/data。
播放列表数据集具有Temperature
列,并且一些温度值为-999。我想用每种体育馆的温度平均值替换那些-999
。
我将体育场类型分为六种类型:
我尝试了groupby
,还创建了新的数据框并进行合并,但是我觉得有一个更简单的解决方案。
请在以下命令后找到以下数据集样本:
play_list_df[play_list_df['Temperature']==-999]
Initial dataset sorted by temperature values = -999
我想用特定于体育馆每个类别的温度平均值替换那些-999。
以下是我使用groupby和agg'mean'函数获得的平均值。
play_list_df[play_list_df['Temperature']!=-999].groupby('StadiumType_cat').mean()
enter image description here 预先感谢您的支持。
答案 0 :(得分:0)
您可以将所有-999值替换为NaN,然后对类别进行分组,并使用带有lambda函数的.transform
来填充均值。
由于您不提供示例数据集,因此很难进行测试(以后不要发布代码或数据集的图片。发布实际的代码或要使用的数据集)
import numpy as np
play_list_df['Temperature'] = play_list_df['Temperature'].replace(-999, np.NaN)
play_list_df["Temperature"] = play_list_df.groupby("StadiumType_cat")['Temperature'].transform(lambda x: x.fillna(x.mean()))