缺少值的列子集的行平均值

2024-05-14 16:18:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个“DataFrame”,它偶尔会丢失一些值,如下所示:

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

我想在我的数据框中添加一个新的column,在这里我将计算每个row的所有columns的平均值。

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

有没有人知道最好的方法来解释这种由缺失值引起的变化并计算平均值?


Tags: columns数据dataframedfcolumnnanrow平均值
2条回答

你可以简单地:

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()默认情况下忽略缺少的值:see 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

备选方案-使用iloc(也可以在此处使用loc):

df['avg'] = df.iloc[:,0:2].mean(axis=1)

相关问题 更多 >

    热门问题