我正在用熊猫计算蜡烛的超趋势。在我的数据帧中,有一列名为up
,另一列名为dn
,如下面代码中所定义的
我需要根据以下条件计算trendUp
特性:
close
大于当前行的trendUp
,则trendUp
应等于当前行的up
和前一行的trendUp
之间的最大值李>我当前的实现如下所示:
candles_df['up'] = candles_df['hl2'] - (factor * candles_df['atr'])
candles_df['dn'] = candles_df['hl2'] + (factor * candles_df['atr'])
candles_df['trendUp'] = candles_df['up']
candles_df['trendUp'] = np.where(candles_df['close'].shift(1) > candles_df['trendUp'], max([candles_df['up'], candles_df['trendUp'].shift(1)]) , candles_df['up'])
但是,当我执行此代码时,会出现以下错误:
Traceback (most recent call last):
File "test_trend.py", line 178, in <module>
trend('instrument')
File "test_trend.py", line 153, in trend
candles_df['trendUp'] = np.where(candles_df['close'].shift(1) > candles_df['trendUp'], max([candles_df['up'], candles_df['trendUp'].shift(1)]) , candles_df['up'])
File "/home/aniruddh/anaconda3/lib/python3.7/site-packages/pandas/core/generic.py", line 1469, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
起初,我认为错误对应于np.where条件子句。但是,如果我用一个静态量替换max()
函数,代码就会工作
我该怎么做? 多谢各位
使用^{} 而不是
max
来计算数组元素的元素最大值np.maximum
比较两个数组并返回一个包含元素最大值的新数组相关问题 更多 >
编程相关推荐