根据结果​​从分组依据的不同列中获取值

时间:2019-08-15 08:59:03

标签: python-3.x pandas pandas-groupby

给出一个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

1 个答案:

答案 0 :(得分:2)

您可以将groupby.cumcounttransformfirst一起使用:

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