我正在尝试创建一个for循环,根据股票的类别计算六个月内的收益。因此,我有3个DataFrame用于执行此操作,如下所示:
df =给定月份的股价
WinnerLoser_df =表示股票是做空(-1)还是做空(1)
portf_df =空的DataFrame应存储返回值。
我正在尝试让每只股票(列)根据信号(-1或1)计算6个月内的回报。因此,股票x的回报将基于6个月前的信号,这就是为什么我在代码中减去6的原因。
portf_df = pd.DataFrame(index = WinnerLoser_df.index , columns = WinnerLoser_df.columns)
for i in WinnerLoser_df.columns:
for j in range(230, len(WinnerLoser_df)):
portf_df[i][j] = WinnerLoser_df[i - 6][j] * (df[i][j] / df[i - 6][j])
print(portf_df.tail(10))
但是这确实会产生错误,因为我减去了6,我试图使用.shift(),但这是行不通的。
TypeError Traceback (most recent call last)
in
5 for i in WinnerLoser_df.columns:
6 for j in range(230, len(WinnerLoser_df)):
----> 7 portf_df[i][j] = WinnerLoser_df[i - 6][j] * (df[i][j] / df[i - 6][j])
8
9 print(portf_df.tail(10))
TypeError: unsupported operand type(s) for -: 'str' and 'int'
是否有其他方法可以移动for循环中的行?