Using Pandas groupby to calculate many slopes

后端 未结 2 425
盖世英雄少女心
盖世英雄少女心 2021-01-07 00:36

Some illustrative data in a DataFrame (MultiIndex) format:

|entity| year |value| +------+------+-----+ | a | 1999 | 2 | | | 2004 | 5 | | b | 20

2条回答
  •  盖世英雄少女心
    2021-01-07 00:48

    A function can be applied to a groupby with the apply function. The passed function in this case linregress. Please see below:

    In [4]: x = pd.DataFrame({'entity':['a','a','b','b','b'],
                              'year':[1999,2004,2003,2007,2014],
                              'value':[2,5,3,2,7]})
    
    In [5]: x
    Out[5]: 
      entity  value  year
    0      a      2  1999
    1      a      5  2004
    2      b      3  2003
    3      b      2  2007
    4      b      7  2014
    
    
    In [6]: from scipy.stats import linregress
    
    In [7]: x.groupby('entity').apply(lambda v: linregress(v.year, v.value)[0])
    Out[7]: 
    entity
    a    0.600000
    b    0.403226
    

提交回复
热议问题