[英]count over conditions with Dataframe
我的问题很简单,我有以下行:
df_Return[df_Return['Aural'] >0].count()
其中 df_return 是 dataframe ,只有一列介于 -1 和 1 之间的 float64,
当我尝试评估它时出现以下错误:
Boolean array expected for the condition, not float64
我在某处缺少什么吗? 谢谢
如果要对 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()
根据这些问题,您的pandas
package 版本似乎存在错误:
https://github.com/quantopian/zipline/issues/2390
https://github.com/pandas-dev/pandas/issues/17170
您可以尝试使用以下命令升级您的pandas
package:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.