【问题标题】:Grouping by with Where conditions in Pandas在 Pandas 中使用 Where 条件分组
【发布时间】:2017-11-16 03:52:58
【问题描述】:

有这样的数据框:

我在减去“pause_end”和“pause_start”列值的基础上创建了“dif_pause”列,并使用 groupby () 函数进行平均值聚合,如下所示:

pauses['dif_pause'] = pauses['pause_end'] - pauses['pause_start']
pauses['dif_pause'].astype(dt.timedelta).map(lambda x: np.nan if pd.isnull(x) else x.days)

pauses_df=pauses.groupby(["subscription_id"])["dif_pause"].mean().reset_index(name="avg_pause")

我想在 groupby 部分中包含检查是否 pause_end>pause_start(SQL 中的 WHERE 子句的一些等效项)。怎么可能做到这一点?

谢谢。

【问题讨论】:

    标签: python pandas where-clause pandas-groupby


    【解决方案1】:

    您似乎需要先使用queryboolean indexing 进行过滤:

    pauses.query("pause_end > pause_start")
           .groupby(["subscription_id"])["dif_pause"].mean().reset_index(name="avg_pause")
    

    pauses[pauses["pause_end"] > pauses["pause_start"]]
          .groupby(["subscription_id"])["dif_pause"].mean().reset_index(name="avg_pause")
    

    【讨论】:

      猜你喜欢
      • 2018-11-26
      • 2020-01-03
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2018-11-22
      • 1970-01-01
      • 2021-07-28
      相关资源
      最近更新 更多