【问题标题】:Filling missing values using means and grouping by logics in Pandas在 Pandas 中使用均值填充缺失值并按逻辑分组
【发布时间】:2017-01-13 00:25:21
【问题描述】:

在 Python 中有这样的数据框:

x1 x2 x3
a  1  1000
a  1  2390
a  1   ?
b  2  120
b  2  2000

所以我的目标是填写第 x3 列中的所有缺失值。但是,如果我使用标准方法 (pd.fillna(df.mean()) 我不会得到理想的结果。我希望能够以某种方式不简单地对 x3 列进行均值(),而对所有 x3 仅进行均值() x1=a 和 x2=1 的值。如何在 Python Pandas 中完成?

【问题讨论】:

    标签: python pandas grouping missing-data


    【解决方案1】:

    您可以使用groupby.transform()按组填充缺失值:

    df['x3'] = df.groupby(["x1", "x2"])['x3'].transform(lambda x: x.fillna(x.mean()))
    

    【讨论】:

      【解决方案2】:

      使用join 和fillna

      c = ['x1', 'x2']
      df.fillna(df[c].join(df.groupby(c).mean(), on=c))
      
        x1  x2      x3
      0  a   1  1000.0
      1  a   1  2390.0
      2  a   1  1695.0
      3  b   2   120.0
      4  b   2  2000.0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-28
        • 2023-01-28
        • 1970-01-01
        • 1970-01-01
        • 2021-12-25
        相关资源
        最近更新 更多