How to increment a row count in groupby in DataFrame

前端 未结 1 740
离开以前
离开以前 2020-12-11 02:18

I need to calculate the number of activity_months for each product in a pandas DataFrame. Here is my data and code so far:

from pandas import DataFrame
from          


        
相关标签:
1条回答
  • 2020-12-11 03:02

    The groupby is the right idea, but the right method is cumcount:

    >>> product_df['month_num'] = product_df.groupby('product_desc').cumcount()
    >>> product_df
    
      product_desc activity_month  prod_count    pct_ch  month_num
    0    product_a     2014-01-01          53       NaN          0
    3    product_a     2014-02-01          52 -0.018868          1
    6    product_a     2014-03-01          50 -0.038462          2
    1    product_b     2014-01-01          44       NaN          0
    4    product_b     2014-02-01          43 -0.022727          1
    7    product_b     2014-03-01          41 -0.046512          2
    2    product_c     2014-01-01          36       NaN          0
    5    product_c     2014-02-01          35 -0.027778          1
    8    product_c     2014-03-01          34 -0.028571          2
    

    If your really want it to start with 1 then just do this instead:

    >>> product_df['month_num'] = product_df.groupby('product_desc').cumcount() + 1
    
      product_desc activity_month  prod_count    pct_ch  month_num
    0    product_a     2014-01-01          53       NaN          1
    3    product_a     2014-02-01          52 -0.018868          2
    6    product_a     2014-03-01          50 -0.038462          3
    1    product_b     2014-01-01          44       NaN          1
    4    product_b     2014-02-01          43 -0.022727          2
    7    product_b     2014-03-01          41 -0.046512          3
    2    product_c     2014-01-01          36       NaN          1
    5    product_c     2014-02-01          35 -0.027778          2
    8    product_c     2014-03-01          34 -0.028571          3
    
    0 讨论(0)
提交回复
热议问题