可以在for循环中移动行吗? (熊猫)

时间:2020-04-13 10:44:52

标签: python pandas

我正在尝试创建一个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循环中的行?

0 个答案:

没有答案