DataFrame(MultiIndex)格式的一些说明性数据:
|entity| year |value|
+------+------+-----+
| a | 1999 | 2 |
| | 2004 | 5 |
| b | 2003 | 3 |
| | 2007 | 2 |
| | 2014 | 7 |
我想使用计算的斜率scipy.stats.linregress为每个实体a和b在上面的例子。我尝试groupby在第一列上使用,遵循split-apply-combine建议,但由于它Series期望值(a和b)中的一个而显得有些问题,而我需要在右边的两列上进行操作。
通过R很容易做到这一点plyr,不确定如何在熊猫中处理它。
一个功能可以groupby与一个功能一起应用apply。在这种情况下传递的函数linregress。请看下面:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3167 次 |
| 最近记录: |