python - 如何将 for 循环的结果存储到给定特定列/行的数据帧?
问题描述
我有一个具有不同信号和返回的数据框。我想做以下事情:
- 子集特定信号
- 计算年化收益率
- 将结果存储到数据框
我的数据框如下所示: 在此处输入图像描述
我的代码如下所示:
years = range(1990,2019,1)
returns = pd.DataFrame(columns=signals)
for i in signals:
signal_i = portbase[portbase['signalname'] == i] #Select single signal from dataframe
for j in years:
signal_i_j = signal_i[signal_i['year'] == j] #Subset single year from signal
return_j = (((signal_i_j['return']/100)+1).prod() -1) * 100 #Calculate annualized return for signal i in year j
returns.loc[j,i] #Add result to dataframe in column i and year j
一切正常,除了最后一部分,我想保存我的结果。我希望我的数据框看起来像这样: 在此处输入图像描述
信号作为列,年份作为行
编辑: 使用以下代码有效:
df = portbase.groupby(['signalname','year'])['return'].apply(lambda x: (np.prod(1+x/100)-1) * 100).reset_index().T
但我的输出仍然不正确: 在此处输入图像描述
我试图将我的输出转换为数据帧,重置索引,现在以某种方式将我的信号列转换为行/标题。
解决方案
试试这个代码:
df = portbase.groupby(['signalname','year'])['return'].apply(lambda x: (np.prod(1+x/100)-1) * 100).unstack().T
推荐阅读
- javascript - 如何从另一个对象更新对象的某些属性?
- php - 在生产环境中获取“找不到类”,但在本地或开发服务器上却没有
- ajax - 如何在spring mvc中加载主页的数据
- php - PHP while 循环分页
- react-native - 在本机反应中使用 highcarts 并得到错误
- r - 尝试安装 rJava 时出现错误消息
- javascript - 如何获取TestCafe中元素内“值”属性的数据?
- react-native - Reactnative 组件异常 CitySelector(...)
- mysql - 按外键和日期分组数据,按日期汇总
- r - 在列联表输出中交换行和标签