【发布时间】:2016-06-24 18:17:35
【问题描述】:
我有一个包含多个列和一个日期列的数据框。日期格式为 12/31/15,我已将其设置为日期时间对象。
我将 datetime 列设置为索引,并希望对数据框的每个月执行回归计算。
我相信执行此操作的方法是根据月份将数据框拆分为多个数据框,存储到数据框列表中,然后对列表中的每个数据框执行回归。
我使用 groupby 成功地按月拆分数据帧,但不确定如何正确地将 groupby 对象中的每个组转换为数据帧,以便能够在其上运行我的回归函数。
有谁知道如何根据日期将一个数据框拆分为多个数据框,或者更好地解决我的问题?
这是我目前编写的代码
import pandas as pd
import numpy as np
import statsmodels.api as sm
from patsy import dmatrices
df = pd.read_csv('data.csv')
df['date'] = pd.to_datetime(df['date'], format='%Y%m%d')
df = df.set_index('date')
# Group dataframe on index by month and year
# Groupby works, but dmatrices does not
for df_group in df.groupby(pd.TimeGrouper("M")):
y,X = dmatrices('value1 ~ value2 + value3', data=df_group,
return_type='dataframe')
【问题讨论】:
-
你可以使用
df.groupby(...).apply。无需循环。我没有时间打出完整的答案。这是我制作的笔记本,演示了类似的内容:gist.github.com/phobson/…
标签: python datetime pandas group-by