当前位置: 代码迷 >> python >> 如何解决熊猫数据框列之间的循环引用?
  详细解决方案

如何解决熊猫数据框列之间的循环引用?

热度:53   发布时间:2023-07-16 10:00:52.0

我有一个带有索引DateSymbol的multiindex数据框。 该数据框大约有1000万行。 数据框具有一个带有TrueFalse值的Entry_signal列,另一个带有数字值的Initial_stop列,以及另一个带有数字值的Low列。 基于这三列的内容,我想计算另外三列: Stop_levelPositionExit_signal 这些应基于以下逻辑进行计算:

data['Entry_signal'] = # True or False
data['Initial_stop'] = # numbers
data['Low'] = # numbers

data['Stop_level'] = np.where(data['Position'] == True,
                              np.maximum(data['Stop_level'].shift(1),
                                         data['Initial_stop']),
                              data['Initial_stop'])

data['Exit_signal'] = np.where(data['Low'] < data.groupby('Symbol')['Stop_level'].shift(1),
                               True,
                               False)

data['Position'] = np.where(data['Exit_signal'] == True,
                            False,
                            np.where(data['Entry_signal'] == True,
                                     True,
                                     data.groupby('Symbol')['Position'].shift(1)))

data['Position'] = data.groupby('Symbol')['Position'].ffill()

现在Stop_level引发错误,因为它需要一个Position 如果我将Position放在开头,则会引发错误,因为它需要Exit_signal 如果我将Exit_signal放在开头,则会引发错误,因为它需要Stop_level 等等。 如何使这种逻辑起作用?

将其写在纸片上:

  1. Stop_level是一个功能: PositionStop_levelInitial_stop
  2. Exit_signal是以下函数: LowSymbolStop_level
  3. Position是以下函数的函数: Exit_signalEntry_signalSymbolPosition

当前订单不起作用,因为Stop_level需要Position Position放在首位不起作用,因为它需要Exit_signal 首先将Exit_signal放置不起作用,因为它需要Stop_level 这将耗尽您的所有选择。

因此,您需要定义可以实际实现的逻辑。

  相关解决方案