我有一个看起来像这样的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()
跳过空值。根据docs:
skipna:布尔值,默认为True计算结果时排除NA /空值。