最初,我有一个大数据框,需要根据唯一的标识符进行拆分。为了有效地做到这一点,我将其变成了一个列表,并按唯一标识符(“桶”)分组
bucket = profile[['Bucket','ACQUISITION_YEAR_MONTH','CAP_WITH_BUFFER']]
dfs = dict(tuple(bucket.groupby(bucket['Bucket'])))
此列表中现在有27个数据帧。对于27个数据帧中的每个数据帧,我需要按“ ACQUISITION_YEAR_MONTH”汇总数据以获取平均“ CAP_WITH_BUFFER”。从那里,我计算波动率并创建一些新字段。我可以通过以下方式手动执行此操作:
bucket1=dfs[1].groupby(['ACQUISITION_YEAR_MONTH']).agg(
{
'CAP_WITH_BUFFER': "mean"
}
)
bucket1['ewma'] = bucket1['CAP_WITH_BUFFER'].ewm(alpha=.94).mean()
bucket1['EWMA_vol']=np.sqrt(bucket1['ewma'])
bucket1['scaled_returns']=bucket1['CAP_WITH_BUFFER'] * (bucket1['EWMA_vol'].iloc[-1]/bucket1['EWMA_vol'])
我正在尝试使用for循环在整个列表dfs上执行上述操作,但是当我运行以下代码时,出现错误“ TypeError:'DataFrame'对象不可调用”
for i in dfs:
bucket()[i] = dfs[i].groupby(['ACQUISITION_YEAR_MONTH']).agg(
{
'CAP_WITH_BUFFER': "mean"
}
)
我想为每个聚合存储桶创建一个新的数据框,相应地命名它,然后以迭代的方式创建字段,但是很麻烦。我是Python的新手,所以将不胜感激。