给出一个df
session article_id article_type primary_section
1 nan nan nan
1 123 magazine sport
1 125 tech laptops
2 126 food asian_food
2 127 food euro_food
我想按session_id分组,并根据article_id上“ first”函数的结果获取session中的article_type,primary_section和页面 输出:
session first_article_id firt_article_type primary_section page_in_sess
1 123 magazine sport 2
2 126 food asian_food 1
答案 0 :(得分:2)
您可以将groupby.cumcount
和transform
与first
一起使用:
m=df.assign(page_in_sess=df.groupby('session').cumcount()+1)
final=m[m.article_id.eq(m.groupby('session')['article_id'].transform('first'))]
session article_id article_type primary_section page_in_sess
1 1 123.0 magazine sport 2
3 2 126.0 food asian_food 1