Mi problema es bastante sencillo, tengo la siguiente línea:

df_Return[df_Return['Aural'] >0].count()

Donde df_return es una trama de datos con una sola columna de float64 entre -1 y 1,

Tengo el siguiente error cuando intento evaluarlo:

Boolean array expected for the condition, not float64

¿Hay algo que me estoy perdiendo en algún lugar? Gracias

0
Prou Prou Tyu 4 nov. 2019 a las 12:47

2 respuestas

La mejor respuesta

Si desea contar los elementos por encima de 0, en realidad suma los valores True. Count le daría la cantidad de elementos en su DataFrame / Series.

Ejemplo:

df = pd.DataFrame(np.random.randn(100))
(df > 0).sum()
# e.g. 51
(df > 0).count()
# 100 elements

Para su ejemplo dado, supongo que este código funcionará:

(df_Return['Aural'] > 0).sum()
0
anki 4 nov. 2019 a las 09:53

Parece que tiene una versión del paquete pandas que tiene un error de acuerdo con estos problemas:

https://github.com/quantopian/zipline/issues/2390

https://github.com/pandas-dev/pandas/issues/17170

Puede intentar actualizar su paquete pandas utilizando los siguientes comandos:

pip install --upgrade pandas

conda update pandas (if you work in Anaconda environment)

Reproduciendo su enfoque usando la versión pandas 0.23.4:

import pandas as pd
import numpy as np

print(pd.__version__)
# 0.23.4

df_return = pd.DataFrame(data=np.linspace(-1, 1, 100), columns=['Aural'])
print(df_return.head())
#       Aural
# 0 -1.000000
# 1 -0.979798
# 2 -0.959596
# 3 -0.939394
# 4 -0.919192

cnt = df_return[df_return['Aural'] > 0].count()
print(cnt['Aural'])
# 50
0
Eduard Ilyasov 4 nov. 2019 a las 11:20