我的问题很简单,我有以下一行:
df_Return [df_Return ['Aural']> 0] .count()
其中df_return是一个数据帧,其中只有一列float64在-1和1之间。
当我尝试评估它时,出现以下错误:
Boolean array expected for the condition, not float64
我某处缺少什么吗? 谢谢
答案 0 :(得分:0)
如果要计数个大于0的元素,则实际上是对True
值求和。 Count将为您提供DataFrame / Series中元素的数量。
示例:
df = pd.DataFrame(np.random.randn(100))
(df > 0).sum()
# e.g. 51
(df > 0).count()
# 100 elements
对于您给定的示例,我认为这段代码将起作用:
(df_Return['Aural'] > 0).sum()
答案 1 :(得分:0)
似乎您拥有pandas
软件包的版本,该软件包根据以下问题存在错误:
https://github.com/quantopian/zipline/issues/2390
https://github.com/pandas-dev/pandas/issues/17170
您可以尝试使用以下命令升级pandas
软件包:
pip install --upgrade pandas
conda update pandas (if you work in Anaconda environment)
使用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