代码之家  ›  专栏  ›  技术社区  ›  TChi

包括Nan的Pandas数据帧中列的加权平均值

  •  0
  • TChi  · 技术社区  · 8 年前

    df.means()
    

    注意,df在列和“Value”中有Nan。

       A      B         C      D      E      F    Value
    0  17656  61496     83     80    117     99   2902804
    1  75078  61179     14      3      6     14   3761964
    2  21316  60648     86    Nan    107     93   127963
    3  6422   48468  28855  26838  27319  27011   131354
    4  12378  42973  47153  46062  46634  42689   3303909572
    5  54292  35896     59      6      3     18   27666367
    6  21272  Nan      126     12      3      5   9618047
    7  26434  35787    113     17      4      8   309943
    8  10508  34314  34197   7100     10     10   NaN
    

    我可以将其用于单个列。

    df1 = df[['A','Value']]
    df1 = df1.dropna()
    np.average(df1['A'], weights=df1['Value'])
    

    1 回复  |  直到 8 年前
        1
  •  2
  •   Zero    8 年前

    可以使用掩码数组。我们可以在 Value 列具有 NaN 价值观

    In [353]: dff = df.dropna(subset=['Value'])
    
    In [354]: dff.apply(lambda x: np.ma.average(
                        np.ma.MaskedArray(x, mask=np.isnan(x)), weights=dff.Value))
    Out[354]:
    A        1.282629e+04
    B        4.295120e+04
    C        4.652817e+04
    D        4.545254e+04
    E        4.601520e+04
    F        4.212276e+04
    Value    3.260246e+09
    dtype: float64