Python 如何修复此值错误:序列的真值不明确。使用a.empty,a.bool()作为我的烛台扫描仪?

Python 如何修复此值错误:序列的真值不明确。使用a.empty,a.bool()作为我的烛台扫描仪?,python,finance,Python,Finance,我制作的这个烛台目前适用于单个股票,但当操纵到多个股票时会出现这个错误 ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all() 以下是我迄今为止的工作: import datetime as dt import pandas_datareader as web import pandas as pd start = dt.datetime(2020,1,1) end = dt.datetime.now() Stock =

我制作的这个烛台目前适用于单个股票,但当操纵到多个股票时会出现这个错误

ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()

以下是我迄今为止的工作:

import datetime as dt 
import pandas_datareader as web
import pandas as pd

start = dt.datetime(2020,1,1)
end = dt.datetime.now()
Stock = ['ANZ.AX','APT.AX']

df = web.DataReader(Stock, 'yahoo', start, end)

# Change data to omit volume and adjusted close (can change later to display volume)
data = df[['Open', 'High', 'Low', 'Close']]

for i in range(2, df.shape[0]):
    current = df.iloc[i, :]
    prev = df.iloc[i - 1, :]
    prev_2 = df.iloc[i - 2, :]

    realbody = abs(current['Open'] - current['Close'])
    candle_range = current['High'] - current['Low']

    idx = df.index[i]

    # Bullish engulfing
    df.loc[idx, 'Bullish engulfing'] = prev['Open'] > prev['Close'] and current['Close'] > current['Open'] \
    and current['High'] > prev['High'] and current['Low'] < prev['Low']

df.fillna(False, inplace=True)

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
print(df['Bullish engulfing']) 
将日期时间导入为dt
将数据读取器导入web
作为pd进口熊猫
开始=日期时间(2020,1,1)
end=dt.datetime.now()
股票=['ANZ.AX','APT.AX']
df=web.DataReader(股票,'yahoo',开始,结束)
#更改数据以忽略音量并调整关闭(以后可以更改为显示音量)
数据=df[[‘打开’、‘高’、‘低’、‘关闭’]]
对于范围(2,df.shape[0])中的i:
当前=df.iloc[i,:]
prev=df.iloc[i-1,:]
prev_2=df.iloc[i-2,:]
realbody=abs(当前['Open']-当前['Close'])
烛光范围=电流['High']-电流['Low']
idx=df.index[i]
#看涨吞噬
df.loc[idx,'看涨吞并']=prev['Open']>prev['Close']和current['Close']>current['Open']\
当前['High']>prev['High']和当前['Low']
您需要使用位运算符(
&
用于
用于
)进行以下布尔运算:

df.loc[idx, 'Bullish engulfing'] = (prev['Open'] > prev['Close']) & (current['Close'] > current['Open']) \
& (current['High'] > prev['High']) & (current['Low'] < prev['Low'])
df.loc[idx,'看涨吞没']=(上一个['Open']>上一个['Close'])和(当前['Close']>当前['Open'])\
&(当前['High']>prev['High'])和(当前['Low']
您需要使用位运算符(
&
用于
用于
)进行以下布尔运算:

df.loc[idx, 'Bullish engulfing'] = (prev['Open'] > prev['Close']) & (current['Close'] > current['Open']) \
& (current['High'] > prev['High']) & (current['Low'] < prev['Low'])
df.loc[idx,'看涨吞没']=(上一个['Open']>上一个['Close'])和(当前['Close']>当前['Open'])\
&(当前['High']>prev['High'])和(当前['Low']
我以前尝试过,结果从值错误变为类型错误。具体来说,它说的是“TypeError:unsupported operation type for&:'float'和'float'”,代码对我来说是有效的。您还需要在条件周围添加偏执,是否尝试将此代码段复制到代码中?你犯了那个错误,因为你没有像我一样在偏执论中添加条件。啊,是的,这是有道理的。现在它可以工作了,但出于某种原因,它只将模式应用于最终的股票代码。由于我的结果是两个单独的股票只有一列。如果原始问题已解决,请将答案标记为已接受以关闭它。你可以在一个单独的问题中提出关于你的语义/逻辑的问题,因为它与你最初提出的问题不同。我以前试过,结果从值错误变为类型错误。具体来说,它说的是“TypeError:unsupported operation type for&:'float'和'float'”,代码对我来说是有效的。您还需要在条件周围添加偏执,是否尝试将此代码段复制到代码中?你犯了那个错误,因为你没有像我一样在偏执论中添加条件。啊,是的,这是有道理的。现在它可以工作了,但出于某种原因,它只将模式应用于最终的股票代码。由于我的结果是两个单独的股票只有一列。如果原始问题已解决,请将答案标记为已接受以关闭它。你可以在一个单独的问题中提出关于你的语义/逻辑的问题,因为它与你最初提出的问题不同。它出现在哪一行?您是否尝试过错误消息中的建议?出现哪一行?您是否尝试过错误消息中的建议?