Python 在数据帧向量化解决方案的子集上迭代拟合回归线?

Python 在数据帧向量化解决方案的子集上迭代拟合回归线?,python,pandas,vectorization,linear-regression,Python,Pandas,Vectorization,Linear Regression,我正在尝试聚合pandas DataFrame并创建两个新列,它们将是一个斜率和一个简单线性回归拟合的截距 虚拟数据集如下所示: CustomerID Month Value a 1 10 a 2 20 a 3 20 b 1 30 b 2 40 c 1 80 c

我正在尝试聚合pandas DataFrame并创建两个新列,它们将是一个斜率和一个简单线性回归拟合的截距

虚拟数据集如下所示:

CustomerID   Month  Value
a                1     10
a                2     20
a                3     20
b                1     30
b                2     40
c                1     80
c                2     90
我希望输出像这样-
月份
每个
客户ID
进行回归:

CustomerID    Slope   Intercept
a              0.30          10
b              0.20          30
c              0.12          80
我知道我可以运行一个循环,然后针对每个
customerID
运行线性回归模型,但我的数据集很大,我需要一种矢量化方法。我尝试通过传递线性回归函数来使用
groupby
apply
,但没有找到可行的解决方案


提前谢谢

通过将
scpiy
groupby
一起使用,这里我使用for循环而不是apply,因为
apply
比for循环慢

from scipy import stats

pd.DataFrame.from_dict({y:stats.linregress(x['Month'],x['Value'])[:2] for y, x in df.groupby('CustomerID')},'index').\
     rename(columns={0:'Slope',1:'Intercept'})
Out[798]: 
   Slope  Intercept
a    5.0   6.666667
b   10.0  20.000000
c   10.0  70.000000

通过将
scpiy
groupby
一起使用,这里我使用for循环而不是apply,因为
apply
比for循环慢

from scipy import stats

pd.DataFrame.from_dict({y:stats.linregress(x['Month'],x['Value'])[:2] for y, x in df.groupby('CustomerID')},'index').\
     rename(columns={0:'Slope',1:'Intercept'})
Out[798]: 
   Slope  Intercept
a    5.0   6.666667
b   10.0  20.000000
c   10.0  70.000000
我试着用。。。你的审判在哪里?有助于正在使用的模块。我们需要一个完整的代码块,包括
import
行。没有找到有效的解决方案。。。你的错误或不期望的结果是什么?我尝试使用。。。你的审判在哪里?有助于正在使用的模块。我们需要一个完整的代码块,包括
import
行。没有找到有效的解决方案。。。您的错误或意外结果是什么?