【问题标题】:Pandas: groupby熊猫:groupby
【发布时间】:2017-08-25 09:30:14
【问题描述】:

我有数据框

df = pd.DataFrame({'member_id': [111, 111, 111, 111, 222, 222, 333, 333], 'event_duration': [12, 242, 3, 21, 4, 76, 34, 12], 'period': [1, 2, 2, 2, 3, 3, 4, 4]})

   event_duration  member_id  period
0              12        111       1
1             242        111       2
2               3        111       2
3              21        111       2
4               4        222       3
5              76        222       3
6              34        333       4
7              12        333       4

我需要计算period 的数量到每个member_id 和周期的中位数

我用

res = df.groupby(['member_id']).agg({'period': pd.Series.nunique, 'event_duration': np.median}).reset_index()

但它会打印所有时期的中位数。但我需要,例如对于111 将中位数设为 1 和 2 周期,[12, 266],我该怎么做?

【问题讨论】:

  • 请显示一些预期的输出。无法理解你想要什么。

标签: python pandas dataframe pandas-groupby


【解决方案1】:

这就是你真正需要的吗:

df.groupby(['member_id', 'period'], as_index=False)['event_duration'].sum().groupby(['member_id'], as_index=False).agg({'period': pd.Series.nunique, 'event_duration': np.median})

   member_id  event_duration  period
0        111             139       2
1        222              80       1
2        333              46       1

【讨论】:

    【解决方案2】:

    据我了解,您需要先按 member_id 分组,然后按期间分组,以便为​​每个 member_id 的每个期间获取不同的 event_duration 值。

    如果是这样的话,我会这样做:

    res = df.groupby(['member_id', 'period']).sum()
    

    打印出来:

                      event_duration
    member_id period                
    111       1                   12
              2                  266
    222       3                   80
    333       4                   46
    

    然后,再次按 member_id 分组,得到 event_duration 的平均值:

    res2 = res.groupby(['member_id']).mean()
    

    打印出来:

               event_duration
    member_id                
    111                   139
    222                    80
    333                    46
    

    我希望这是你想要达到的结果。

    【讨论】:

      猜你喜欢
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 2018-05-16
      • 2021-06-16
      • 2013-10-24
      • 2021-12-24
      • 2019-04-12
      相关资源
      最近更新 更多