python-3.x - 如何从循环写入数据帧
问题描述
我正在尝试计算 33 个股票 beta 并将它们写入数据框。
不幸的是,我的代码中有一个错误:无法连接类型为“”的对象;只有 pd.Series、pd.DataFrame 和 pd.Panel(已弃用)obj 是有效的
import pandas as pd
import numpy as np
stock1=pd.read_excel(r"C:\Users\Кир\Desktop\Uni\Master\Nasdaq\Financials 11.05\Nasdaq last\clean data\01.xlsx", '1') #read second sheet of excel file
stock2=pd.read_excel(r"C:\Users\Кир\Desktop\Uni\Master\Nasdaq\Financials 11.05\Nasdaq last\clean data\01.xlsx", '2') #read second sheet of excel file
stock2['stockreturn']=np.log(stock2.AdjCloseStock / stock2.AdjCloseStock.shift(1)) #stock ln return
stock2['SP500return']=np.log(stock2.AdjCloseSP500 / stock2.AdjCloseSP500.shift(1)) #SP500 ln return
stock2 = stock2.iloc[1:] #delete first row in dataframe
betas = pd.DataFrame()
for i in range(0,(len(stock2.AdjCloseStock)//52)-1):
betas = betas.append(stock2.stockreturn.iloc[i*52:(i+1)*52].cov(stock2.SP500return.iloc[i*52:(i+1)*52])/stock2.SP500return.iloc[i*52:(i+1)*52].cov(stock2.SP500return.iloc[i*52:(i+1)*52]))
我的数据看起来像是 33 年的每周股票和标准普尔指数回报。所以输出应该有 33 个 beta。
解决方案
我尝试简化您的代码并创建一个示例。我认为问题在于您的计算返回一个浮点数。你想让它成为一个 pd.Series。DataFrame.append需要:
DataFrame 或 Series/dict-like 对象,或这些对象的列表
np.random.seed(20)
df = pd.DataFrame(np.random.randn(33*53, 2),
columns=['a', 'b'])
betas = pd.DataFrame()
for year in range(len(df['a'])//52 -1):
# Take some data
in_slice = pd.IndexSlice[year*52:(year+1)*52]
numerator = df['a'].iloc[in_slice].cov(df['b'].iloc[in_slice])
denominator = df['b'].iloc[in_slice].cov(df['b'].iloc[in_slice])
# Do some calculations and create a pd.Series from the result
data = pd.Series(numerator / denominator, name = year)
# Append to the DataFrame
betas = betas.append(data)
betas.index.name = 'years'
betas.columns = ['beta']
betas.head():
beta
years
0 0.107669
1 -0.009302
2 -0.063200
3 0.025681
4 -0.000813
推荐阅读
- google-sheets - Google 表格中的数字格式错误
- python - 集成 Python 和 C++ 代码时如何修复抛出错误?我将函数从 Python 调用到 C++ 的方式有问题吗?
- php - php.ini 在服务器重新启动后不反映更改
- vue.js - Vuetify3 如何定义主题设置
- python - 将一个数据帧中的值附加或连接到 Pandas 中另一个数据帧中的每一行
- python - 将 .shp 文件查询到 Excel 时如何解决错误?
- powershell - 在 If 条件下验证字符串不为空/null
- d3.js - 使用 D3 和 D3Plus 更改文本中的一种单词颜色
- kubernetes - 集群资源管理器中集群应用程序部分中的牧场主链接自定义服务
- design-patterns - REST API 客户端设计 - 最佳实践