【问题标题】:separate groupby in python pandaspython pandas中的单独groupby
【发布时间】:2022-06-30 16:47:13
【问题描述】:

我需要关于 pandas 中 groupby 的帮助:

我有以下 df:

A     B          C          D
04547 2022-07-04 2022-07-04 1000000
04547 2022-07-11 2022-07-11 1000000
04547 2022-08-08 2022-08-08 1000000
04547 2022-10-11 2022-10-11 0100000
04547 2022-10-18 2022-10-18 0100000
04547 2022-10-24 2022-10-24 1000000
04547 2022-11-01 2022-11-01 0100000
04547 2022-11-08 2022-11-08 0100000
04548 2022-10-11 2022-10-11 0100000
04548 2022-10-18 2022-10-18 0100000
04548 2022-10-24 2022-10-24 1000000
04548 2022-11-01 2022-11-01 0100000
04548 2022-11-08 2022-11-08 0100000

我需要的输出应该是:

A     B          C          D
04547 2022-07-04 2022-08-08 1000000
04547 2022-10-11 2022-10-18 0100000
04547 2022-10-24 2022-10-18 1000000
04548 2022-10-24 2022-10-24 1000000
04548 2022-11-01 2022-11-08 0100000

但有:

a = {'A':'first','B':'first','C':'last','D':'first'}
df = df.groupby(['A','D']).agg(a)

A     B          C          D
4547 2022-10-11 2022-11-08  0100000
4547 2022-07-04 2022-10-24  1000000
4548 2022-10-11 2022-11-08  0100000
4548 2022-10-24 2022-10-24  1000000

因为当 D 列中的新系列开始为每列 A 分开时,我必须中断分组

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    你可以使用:

    a = {'A':'first','B':'first','C':'last','D':'first'}
    out = df.groupby(['A', df['D'].ne(df['D'].shift())], as_index=False).agg(a)
    

    输出:

          A           B           C        D
    0  4547  2022-07-11  2022-11-08  1000000
    1  4547  2022-07-04  2022-11-01  1000000
    2  4548  2022-10-11  2022-11-08   100000
    3  4548  2022-10-24  2022-11-01  1000000
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2018-12-03
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      相关资源
      最近更新 更多