是否有一种方法来计算平均值,仅在数据框中大于0的列中的值?



是否有一种方法可以计算平均值,仅在数据框中大于0的列中的值?我有一个结构如下的数据集。

Week    |Mon    |Tues   |Weds      |Thurs  |Fri    |Sat     |Sun    |average
:-------:-------:-------:----------:-------:-------:--------:-------:-----------
1       |5915   |2997   |8499      |1248   |3089   |1343    |0      |3298.71
2       |0      |0      |3588      |5693   |1297   |288     |2453   |1902.71

使用mean将得到所述列中的所有值,从而得到Total/7。df['average'] = df[['Mon', 'Tues','Weds','Thurs','Fri','Sat','Sun']].mean(axis=1)

有没有一种方法可以用以下方法得到结果:

Week    |Mon    |Tues   |Weds      |Thurs  |Fri    |Sat     |Sun    |average (desired output)
:-------:-------:-------:----------:-------:-------:--------:-------:--------------------------------
1       |5915   |2997   |8499      |1248   |3089   |1343    |0      |(5915+2997+8499+1248+3089+1343)/6
2       |0      |0      |3588      |5693   |1297   |288     |2453   |(3588+5693+1297+288+2453)/5

只需添加另一层布尔索引,使其仅为正数:

df[df[['Mon', 'Tues','Weds','Thurs','Fri','Sat','Sun']]>0].mean(axis=1)

最新更新