【问题标题】:pandas: how to get if column is greater than x select the max of two columns otherwise select mean?熊猫:如果列大于x,如何获得选择两列的最大值,否则选择平均值?
【发布时间】:2020-05-05 11:21:51
【问题描述】:

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

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

非常感谢!

【问题讨论】:

  • 如果你展示你的尝试和错误结果会很好
  • 你有没有尝试过?这似乎相当基本。
  • 我很抱歉。编辑显示我卡在我的代码上。谢谢!
  • 您阅读过 Pandas 文档吗?或有关该主题的任何资源?

标签: python pandas dataset data-science np


【解决方案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/null 值。

【讨论】:

    猜你喜欢
    • 2013-10-30
    • 2015-09-11
    • 2021-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多