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

问题描述 投票:0回答:1

我非常新,并且在我去的时候学习。但是似乎无法修复此错误 - 已经有一段时间了。这是输入:

# Signals

VWAPsignal = [0]*len(df)
backcandles = 4

for row in range(backcandles, len(df)):
    upt = 1
    dnt = 1
    for i in range(row-backcandles, row+1):
        if df.High[i]>=df.VWAP[i]:
            dnt=0
        if df.Low[i]<=df.VWAP[i]:
            upt=0
    if upt==1 and dnt==1:
        VWAPsignal[row]=3
    elif upt==1:
        VWAPsignal[row]=2
    elif dnt==1:
        VWAPsignal[row]=1

df['VWAPSignal'] = VWAPsignal

def TotalVWAPSignal(l):
    myclosedistance = df['7Period-Range']
    if (df.VWAPSignal[l] == 2)
        and (min (abs(df.VWAP[l]-df.High[l]), abs(df.VWAP[l]-df.Low[l])) <= myclosedistance):
            return 2
    if (df.VWAPSignal[l] == 1) 
        and (min (abs(df.VWAP[l]-df.High[l]), abs(df.VWAP[l]-df.Low[l]))<=myclosedistance):
            return 1  

TotSignal = [0]*len(df)
for row in range(0, len(df)):
    TotSignal[row] = TotalVWAPSignal(row)
df['TotalSignal'] = TotSignal

它返回以下错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-27-90a00c92cea7> in <module>
     30 TotSignal = [0]*len(df)
     31 for row in range(0, len(df)):
---> 32     TotSignal[row] = TotalVWAPSignal(row)
     33 df['TotalSignal'] = TotSignal

<ipython-input-27-90a00c92cea7> in TotalVWAPSignal(l)
     23 def TotalVWAPSignal(l):
     24     myclosedistance = df['7Period-Range']
---> 25     if (df.VWAPSignal[l] == 2) and (min (abs(df.VWAP[l]-df.High[l]), abs(df.VWAP[l]-df.Low[l])) <= myclosedistance):
     26             return 2
     27     if (df.VWAPSignal[l] == 1) and (min (abs(df.VWAP[l]-df.High[l]), abs(df.VWAP[l]-df.Low[l]))<=myclosedistance):

~/opt/anaconda3/lib/python3.8/site-packages/pandas/core/generic.py in __nonzero__(self)
   1532     @final
   1533     def __nonzero__(self):
-> 1534         raise ValueError(
   1535             f"The truth value of a {type(self).__name__} is ambiguous. "
   1536             "Use a.empty, a.bool(), a.item(), a.any() or a.all()."

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

有一些类似的问题在于 if 和语句周围的括号。玩过它但似乎无法正确使用它。

python pandas dataframe boolean series
1个回答
0
投票

myclosedistance
是一个
Series
,因此与它进行比较会产生一个系列。也许你是这个意思?

myclosedistance = df['7Period-Range'][l]
© www.soinside.com 2019 - 2024. All rights reserved.