python - not bool 不起作用,但 bool != True 有效
问题描述
以下不起作用:
data = pandas.read_csv("2018_Central_Park_Squirrel_Census_-_Squirrel_Data.csv")
fur_color_col = data["Primary Fur Color"]
print(data[not pandas.isna(data["Primary Fur Color"])]["Primary Fur Color"].unique())
错误是:
Traceback (most recent call last):
File "/Users/arvind.avinash/PycharmProjects/AdHoc/main.py", line 6, in <module>
print(data[not pandas.isna(data["Primary Fur Color"])]["Primary Fur Color"].unique())
File "/Users/arvind.avinash/PycharmProjects/AdHoc/venv/lib/python3.9/site-packages/pandas/core/generic.py", line 1537, in __nonzero__
raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
以下作品:
data = pandas.read_csv("2018_Central_Park_Squirrel_Census_-_Squirrel_Data.csv")
fur_color_col = data["Primary Fur Color"]
print(data[pandas.isna(data["Primary Fur Color"]) != True]["Primary Fur Color"].unique())
和输出:
['Gray' 'Cinnamon' 'Black']
为什么不not bool
工作,而工作bool != True
?
解决方案
因为non
对于数组(在 pandas 或 numpy 中)是 operator ~
,所以需要:
print(data[~pandas.isna(data["Primary Fur Color"])]["Primary Fur Color"].unique())
对于数组中的比较(在 pandas 或 numpy 中)使用与纯 python 中相同的运算符,因此!= True
运行良好。
或者可以使用Series.notna
:
print(data.loc[data["Primary Fur Color"].notna(), "Primary Fur Color"].unique())
推荐阅读
- apache-camel - camel service discovery got error when local consul client forcibly shutdown
- c# - DDD integration: command handler questions?
- python - 在 mean() 之后绘制
- python - AttributeError: 'Tensor' object has no attribute 'numpy
- linux - jenkins 由于进程“/var/tmp/bbb/bbb”而自动终止
- r - 如何拆分和重新排列列表
- python - Why does changing my desktop through python result in a red wallpaper?
- ios - 列表项内的按钮无法正常工作
- json - 使用 jq 从 swagger json 中提取路径、方法和内容类型
- javascript - How to fetch data between two dates using axios library