【问题标题】:Fill in missing rows from columns after groupby in python pandas在python pandas中groupby之后从列中填充缺失的行
【发布时间】:2017-05-08 21:44:18
【问题描述】:

我有一个看起来像这样但更大的数据集。

Column A   Column B  Result
1          1         2.4
1          4         2.9
1          1         2.8
2          5         9.3
3          4         1.2

df.groupby(['Column A','Column B'])['result'].mean() 

Column A   Column B  Result
1          1         2.6
           4         2.9
2          5         9.3
3          4         1.2

我希望 B 列的范围为 1-10,这些行的结果是 A 列和 B 列的平均值。所以这是我想要的表:

Column A   Column B  Result
1          1         2.6
           2         2.75
           3         2.75
           4         2.9 
           5         6.025
2          1         5.95
           2         9.3
           3         9.3
...

希望这一点正在得到解决。我知道平均情况非常令人困惑,所以我只需要能够填写所需范围的缺失值即可。感谢您的帮助!

【问题讨论】:

    标签: python pandas group-by mean


    【解决方案1】:

    您需要reindexMultiIndex.from_product 创建的新indexgroupby 由第一级Column Afillnamean 每组:

    df = df.groupby(['Column A','Column B'])['Result'].mean() 
    mux = pd.MultiIndex.from_product([df.index.get_level_values(0).unique(),
                                      np.arange(1,10)], names=('Column A','Column B'))
    df = df.reindex(mux)
    df = df.groupby(level='Column A').apply(lambda x: x.fillna(x.mean()))
    print (df)
    Column A  Column B
    1         1           2.60
              2           2.75
              3           2.75
              4           2.90
              5           2.75
              6           2.75
              7           2.75
              8           2.75
              9           2.75
    2         1           9.30
              2           9.30
              3           9.30
              4           9.30
              5           9.30
              6           9.30
              7           9.30
              8           9.30
              9           9.30
    3         1           1.20
              2           1.20
              3           1.20
              4           1.20
              5           1.20
              6           1.20
              7           1.20
              8           1.20
              9           1.20
    Name: Result, dtype: float64
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-08
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      相关资源
      最近更新 更多