【发布时间】:2015-09-09 07:11:36
【问题描述】:
我正在尝试按日期对数据框 groupby 的结果进行线性回归,并将结果汇总到另一个数据框上。到目前为止,我使用的是中间系列:
数据框类似于
marker date variable identifier value
EA 2007-01-01 0.33 55 123
EA 2007-01-01 0.73 56 1123
EA 2007-01-01 0.51 57 123
EA 2007-02-01 0.13 55 4446
EA 2007-02-01 0.23 57 667
EA 2007-03-01 0.82 55 5675
EA 2007-03-01 0.88 56 1
EB 2007-01-01 0.13 45 123
EB 2007-01-01 0.74 46 33234
EB 2007-01-01 0.56 47 111
EB 2007-02-01 0.93 45 42657
EB 2007-02-01 0.23 47 12321355
EB 2007-03-01 0.82 45 9897
EB 2007-03-01 0.38 46 786
EB 2007-03-01 0.19 47 993845
还有代码sn-p:
import statsmodels as sm
import pandas as pd
reg_results = pd.Series(name='reg_results')
mean_results = pd.Series(name='mean_results')
for date, group in df.groupby(df.index.date):
formula = sm.formula.ols('value ~ variable', data=group).fit()
reg_results.set_value(date.strftime("%Y-%m-%d"), formula.params['Intercept'] + formula.params['variable']*group['variable'])
mean_results.set_value(date.strftime("%Y-%m-%d"), group.mean()['variable'])
final_df = pd.DataFrame()
final_df = pd.concat([reg_results, mean_results], axis=1)
还有其他操作,例如组上的第二个 groupby 等等,所以我要为每个要创建的操作创建一个系列,这会变得非常复杂非常快。有没有办法一步完成,或者至少没有中间系列?
【问题讨论】: