Pandas 在 groupby 之后添加 count 和 column with list

Pandas add count and column with list after groupby

我有以下数据框 df:

Month       Cat Constr  Part
1/1/2021    asd v1      p1
1/1/2021    asd v1      p2
1/1/2021    asd v2      p1
1/1/2021    pqr v1      p1
1/1/2021    pqr v1      p2
1/1/2021    pqr v2      p2

我正在努力实现以下目标:

Month       Cat Constr  count   part
1/1/2021    asd v1      2       [p1, p2]
1/1/2021    asd v2      1       [p1]
1/1/2021    pqr v1      2       [p1,p2]
1/1/2021    pqr v2      1       [p2]

要获取计数列,我执行以下操作:

df.groupby(['Month', 'Cat', 'Constr']).agg(['count'])

但我不确定如何添加属于 groupby

Part 的列表

我正在尝试按 ['Month', 'Cat', 'Constr'] 进行分组,并根据唯一组合找到每个分组的 Part 的数量以及构成该组的 Part 的列表。

像你一样使用 groupby 但应用 list:

>>> df.groupby(['Month', 'Cat Constr']).agg(list).reset_index()

       Month Cat Constr      Part
0 2021-01-01     asd v1  [p1, p2]
1 2021-01-01     asd v2      [p1]
2 2021-01-01     pqr v1  [p1, p2]
3 2021-01-01     pqr v2      [p2]

聚在一起:

>>> df.groupby(['Month', 'Cat Constr'])['Part'] \
      .agg(count='count', part=list)

       Month Cat Constr  count      part
0 2021-01-01     asd v1      2  [p1, p2]
1 2021-01-01     asd v2      1      [p1]
2 2021-01-01     pqr v1      2  [p1, p2]
3 2021-01-01     pqr v2      1      [p2]