Mon problème est assez simple, j'ai la ligne suivante:

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

Où df_return est une trame de données avec une seule colonne de float64 entre -1 et 1,

J'ai l'erreur suivante lorsque j'essaie de l'évaluer:

Boolean array expected for the condition, not float64

Y a-t-il quelque chose qui me manque quelque part? Merci

0
Prou Prou Tyu 4 nov. 2019 à 12:47

2 réponses

Meilleure réponse

Si vous voulez compter les éléments au-dessus de 0, vous additionnez en fait les valeurs True. Count vous donnerait le nombre d'éléments dans votre DataFrame / Series.

Exemple:

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

Pour votre exemple donné, je suppose que ce code fonctionnera:

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

Il semble que vous ayez une version du package pandas qui comporte un bogue en fonction de ces problèmes:

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

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

Vous pouvez essayer de mettre à niveau votre package pandas à l'aide des commandes suivantes:

pip install --upgrade pandas

conda update pandas (if you work in Anaconda environment)

Reproduire votre approche en utilisant la version 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 à 11:20