繁体   English   中英

熊猫:如何获得如果列大于 x 选择两列的最大值,否则选择平均值?

[英]pandas: how to get if column is greater than x select the max of two columns otherwise select mean?

我有一个看起来像这样的 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)

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

非常感谢!

一种方法是将 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()跳过空值。 根据文档

skipna : bool,默认 True 计算结果时排除 NA/null 值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM