gpt4 book ai didi

python - Pandas - 根据日期将数据框拆分为多个数据框?

转载 作者:太空宇宙 更新时间:2023-11-04 07:07:16 24 4
gpt4 key购买 nike

我有一个包含多列和一个日期列的数据框。日期格式为 12/31/15,我已将其设置为日期时间对象。

我将日期时间列设置为索引,并希望对数据框的每个月执行回归计算。

我认为这样做的方法是根据月份将数据帧拆分为多个数据帧,存储到数据帧列表中,然后对列表中的每个数据帧执行回归。

我已经使用 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')

最佳答案

如果必须循环,则需要在遍历 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_name:

for group_name, df_group in df.groupby(pd.Grouper(freq='M')):
y,X = dmatrices('value1 ~ value2 + value3', data=df_group,
return_type='dataframe')

如果您想避免迭代,请查看 Paul H's gist 中的笔记本(请参阅他的评论),但是使用 apply 的一个简单示例是:

def do_regression(df_group, ret='outcome'):
"""Apply the function to each group in the data and return one result."""
y,X = dmatrices('value1 ~ value2 + value3',
data=df_group,
return_type='dataframe')
if ret == 'outcome':
return y
else:
return X

outcome = df.groupby(pd.Grouper(freq='M')).apply(do_regression, ret='outcome')

关于python - Pandas - 根据日期将数据框拆分为多个数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35907421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com