用数据框计算条件

时间:2019-11-04 09:47:08

标签: python dataframe count

我的问题很简单,我有以下一行:

  

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

其中df_return是一个数据帧,其中只有一列float64在-1和1之间。

当我尝试评估它时,出现以下错误:

Boolean array expected for the condition, not float64

我某处缺少什么吗? 谢谢

2 个答案:

答案 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