我有一个dataframe
,其中有类似gp1, gp2, gp3, id, sub_id, activity
的列
usr gp2 gp3 id sub_id activity
1 IN ASIA 1 1 1
1 IN ASIA 1 2 1
1 IN ASIA 2 9 0
2 IN ASIA 3 4 1
2 IN ASIA 3 5 1
2 IN ASIA 4 6 1
2 IN ASIA 4 7 0
2 IN ASIA 4 8 0
我想通过在usr, gp1, gp2
上分组来聚合上述 Dataframe ,并计算两列,一列是“帐户(id)”,这是每个组的唯一id
的数量,然后是实际(活动),这是基于每个唯一“id”的Activity
。for example, if id = 1, the activity sum would be 1 not 2
usr gp1 gp3 id Activity
1 IN ASIA 2 1
2 IN ASIA 2 2
df.groupby(['usr', 'gp2', 'gp3']).agg({'id': pd.Series.nunique, 'activity': LOGIC_REQUIRED})
2条答案
按热度按时间pieyvz9o1#
使用
GroupBy.apply
对多个(相关)列进行操作:3qpi33ja2#