一尘不染

缺少值的列子集的行平均

python

我有一个’DataFrame’,它偶尔会缺少值,看起来像这样:

          Monday         Tuesday         Wednesday 
      ================================================
Mike        42             NaN               12
Jenna       NaN            NaN               15
Jon         21              4                 1

我想在column数据框中添加一个新的数据,以计算columns每个数据的平均值row

意思是,对于Mike,我需要 (df['Monday'] + df['Wednesday'])/2,但是对于Jenna,我只需要使用df['Wednesday amt.']/1

有谁知道解决因缺失值导致的变化并计算平均值的最佳方法?


阅读 123

收藏
2020-12-20

共1个答案

一尘不染

您可以简单地:

df['avg'] = df.mean(axis=1)

       Monday  Tuesday  Wednesday        avg
Mike       42      NaN         12  27.000000
Jenna     NaN      NaN         15  15.000000
Jon        21        4          1   8.666667

因为.mean()默认情况下会忽略缺失值:请参阅docs

要选择一个子集,您可以:

df['avg'] = df[['Monday', 'Tuesday']].mean(axis=1)

       Monday  Tuesday  Wednesday   avg
Mike       42      NaN         12  42.0
Jenna     NaN      NaN         15   NaN
Jon        21        4          1  12.5
2020-12-20