El valor de verdad de una serie es ambiguo. Utilice a.empty, a.bool (), a.item (), a.any () o a.all ()

Mis entradas son, entrada de datos en la parte superior

Date Time Open High Low Close Volume 02/01/2015 14:30 79.52 79.73 79.52 79.71 10841 02/01/2015 14:31 79.6999 79.6999 79.61 79.67 1426 02/01/2015 14:32 79.69 79.7 79.69 79.7 800 02/01/2015 14:33 79.7 79.759 79.7 79.759 1158 02/01/2015 14:34 79.747 79.747 79.73 79.73 1125 02/01/2015 14:35 79.73 79.73 79.71 79.71 301 02/01/2015 14:36 79.8 79.82 79.75 79.82 7818 02/01/2015 14:37 79.82 79.83 79.778 79.82 6985 02/01/2015 14:38 79.8099 79.8099 79.72 79.72 1026 02/01/2015 14:39 79.77 79.78 79.7396 79.78 870 02/01/2015 14:40 79.79 79.79 79.73 79.73 12031 02/01/2015 14:41 79.76 79.76 79.6901 79.736 4642 02/01/2015 14:42 79.7301 79.744 79.7301 79.744 1099 numRow = 1 endRow = 50 dHaGreen0 = {} for ticker in Index_tickers.ticker: index_data = pd.read_csv('C:\\Users\\me\\Dropbox\\MktData\\Index_list\\' + ticker + '_' + str(timeFrame) + '.csv') open0 = index_data.Open close0 = index_data.Close high0 = index_data.High low0 = index_data.Low dHaClose0 = (open0 + high0 + low0 + close0) / 4 dHaOpen0 = (dHaClose1 + dHaOpen1) / 2 dHaGreen0 = dHaClose0 >= dHaOpen0 if numRow < endRow: dOpen0 = index_data.ix[numRow, index_data.Open] if dHaGreen0 == True & dHaGreen1 == True: dPosition = "Long" numRow = numRow + 1 

cuando imprimo dHaGreen0, devuelve una lista de bool y “dtype: bool”. Pero cuando voy a usar dHaGreen0 en la sentencia if, obtengo el error ValueError:

El valor de verdad de una serie es ambiguo. Utilice a.empty, a.bool (), a.item (), a.any () o a.all ().

He comprobado muchas de las respuestas sugeridas de preguntas anteriores, pero no puedo leerlas. Todas las respuestas son muy apreciadas.

El error que estás viendo es correcto. dHaGreen0 es una matriz de valores bool. Cuando pregunta “dHaGreen0 == True”, debe decidir sobre una de las dos interpretaciones siguientes:

¿Quieres decir que si algún valor es dHaGreen0 es True? Si es así, reemplace “dHaGreen0 == True” con “any (dHaGreen0) == True”.

¿O quieres decir si todos los valores en dHaGreen0 son verdaderos? Si es así, reemplaza “dHaGreen0 == True” con “all (dHaGreen0) == True”.

Del mismo modo para dHaGreen1

Si estás tratando de hacer esto para cada par:

 dPosition = dHaGreen0 & dHaGreen1 

Esto te dará una serie de booleanos que dan el resultado para cada par.