【问题标题】:Aggregate the column values and keep the values greater than certain number聚合列值并保持大于某个数字的值
【发布时间】:2021-06-22 12:39:34
【问题描述】:

假设数据框如下所示:

Unique_id  Value
105590  0.000627
105590  0.000650
105590  0.000648
105590  0.000650
......  ........
......  ........
106690  0.000652
106690  0.000634
106690  0.000632

有unique_ids,每个id有288个值(行)

  • 我只需要保留 288 个值的总和大于 15 小于 20 的唯一 id。

我试过了

df3 = df.groupby('Unique_id').sum().reset_index()

但它只聚合唯一 ID 的值。

如何做到这一点?

谢谢!

【问题讨论】:

    标签: python pandas pandas-groupby


    【解决方案1】:

    我想这就是你想要的:

    df.groupby("Unique_id").filter(lambda x: (x["Value"].sum()>15)&(x["Value"].sum()<20))
    

    【讨论】:

      【解决方案2】:

      如果需要过滤聚合值,请使用Series.between:

      s = df.groupby("Unique_id")["Value"].sum()
      
      df1 = s[s.between(15, 20)].reset_index(name='summed')
      

      如果需要过滤原始DataFrame更快的方式使用GroupBy.transform然后过滤原始DataFrame:

      df2 = df[df.groupby("Unique_id")["Value"].transform('sum').between(15, 20)]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多