如何根据其他列替换dataframe列中的值

时间:2020-01-20 21:55:43

标签: python pandas

我正在研究kaggle竞赛中的NFL数据:https://www.kaggle.com/c/nfl-playing-surface-analytics/data

播放列表数据集具有Temperature列,并且一些温度值为-999。我想用每种体育馆的温度平均值替换那些-999

我将体育场类型分为六种类型:

  • 室外
  • indoor_closed
  • indoor_open ...

我尝试了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 预先感谢您的支持。

1 个答案:

答案 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()))