Adding a 'count' column to the result of a groupby in pandas?

后端 未结 2 901
[愿得一人]
[愿得一人] 2020-11-30 08:33

I think this is a fairly basic question, but I can\'t seem to find the solution.

I have a pandas dataframe similar to the following:

import pandas as         


        
相关标签:
2条回答
  • 2020-11-30 09:11

    You can using size

    df.groupby(['A','B']).size()
    Out[590]: 
    A  B
    x  p    2
    y  q    1
    z  r    2
    dtype: int64
    

    For your solution adding one of the columns

    df.groupby(['A','B']).B.agg('count')
    Out[591]: 
    A  B
    x  p    2
    y  q    1
    z  r    2
    Name: B, dtype: int64
    

    Update :

    df.groupby(['A','B']).B.agg('count').to_frame('c').reset_index()
    
    #df.groupby(['A','B']).size().to_frame('c').reset_index()
    Out[593]: 
       A  B  c
    0  x  p  2
    1  y  q  1
    2  z  r  2
    
    0 讨论(0)
  • 2020-11-30 09:23

    pandas >= 1.1: DataFrame.value_counts

    This is an identical replacement for df.groupby(['A', 'B']).size().

    df.value_counts(['A', 'B'])
    
    A  B
    z  r    2
    x  p    2
    y  q    1
    dtype: int64
    
    df.value_counts(['A', 'B']).reset_index(name='c')
    
       A  B  c
    0  z  r  2
    1  x  p  2
    2  y  q  1
    
    0 讨论(0)
提交回复
热议问题