pandas:如果列大于x,如何选择两列的最大值,否则选择均值?

问题描述 投票:0回答:1

我有一个看起来像这样的df,想要添加一个adj表示,如果两列(avg或rolling_mean)之一为0,则选择最大值,否则它将获得两列的平均值。

 ID Avg  rolling_mean   adj_mean (goal to have this column)

 0  5    0              5

 1  6    6.3            6.15

 2  5    8              6.5

 3  4    0              4

我能够使用此代码获得列的最大值

 df["adj_mean"]=df[["Avg", "rolling_mean"]].max(axis=1)

但是如果两个值都大于零,则不确定如何添加平均值。

非常感谢!

python pandas dataset data-science np
1个回答
1
投票

一种方法是将0视为NaN,然后简单地计算均值

df['adj_mean'] = df.replace({0: np.nan})[["Avg", "rolling_mean"]].mean(axis=1)

Out[1]: 
   rolling_mean  Avg  adj_mean
0           0.0    5      5.00
1           6.3    6      6.15
2           8.0    5      6.50
3           0.0    4      4.00

默认情况下,df.mean()跳过空值。根据docs

skipna:布尔值,默认为True计算结果时排除NA /空值。

© www.soinside.com 2019 - 2024. All rights reserved.