pandas - 循环创建 df 列,其值取决于列标题中的数字
问题描述
我正在构建一个计算投资组合历史波动率的 df。我需要计算投资组合过去 50 天每一天的历史波动率。
我有一个列标题为“偏移 0”到“偏移 49”的 df,我的计划是使用创建的变量来设置公式中的列来循环计算历史波动率的列。
df = pd.DataFrame(0,columns=['Offset 0','Offset 1', 'Offset 2'...'Offset 49']
填充df的正确公式是
df['Offset 0'] = (((percentage_weights.values * ln_returns.shift(0).values).sum(axis = 1))*(np.sqrt(365/days.shift(0))))**2
在这里,我有 3 个输入 dfs 来计算历史波动率。(percentage_weights、ln_returns 和天)
我正在寻找一个循环来遍历列并通过列标题中的变量更改 shift 参数。所以 df['Offset 1'] 的正确公式是:
df['Offset 1'] = (((percentage_weights.values * ln_returns.shift(1).values).sum(axis = 1))*(np.sqrt(365/days.shift(1))))**2
我努力了 :
for col in df.columns:
for p in range(0,49):
df[col] = (((percentage_weights.values * ln_returns.shift(p).values).sum(axis = 1))*(np.sqrt(365/days.shift(p))))**2
但这只是给了我 df['Offset 0'] 无处不在的值。
解决方案
推荐阅读
- node.js - 使用 Csurf 库时,csurf 令牌未保存在 Safari 中
- wordpress - 具有相同名称的现有页面时重写自定义帖子类型的规则
- javafx - 在 JavaFX 中创建笛卡尔平面图
- python - Relative module paths in python - how to configure paths (and PyCharm)
- mysql - MySQL:如何计算结果在 Select 中的位置?
- java - 如何编写项目现有的命令注入
- mailchimp-api-v3.0 - 如何使用他们的 API 使用特定命令搜索 Mailchimp 的所有成员
- react-native-android - React Native CLI android app showing default welcome page always
- php - WebSelfStorage API 预订日期问题
- javascript - 如何在 html5 中的页面加载或页面更改时自动播放音频