gpt4 book ai didi

python - Pandas boolean DataFrame 选择歧义

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:54 24 4
gpt4 key购买 nike

编辑:表格中的固定值。

假设我有一个 pandas 数据框 df:

>>>df
a b c
0 0.016367 0.289944 -0.891527
1 1.130206 0.899758 -0.276587
2 1.390528 -1.472802 0.128979
3 0.023598 -0.931329 0.158143
4 1.401183 -0.162357 -0.959156
5 -0.127765 1.142039 -0.734434

所以现在我尝试做一些 bool 索引:

>>>df[df > 0.5]
a b c
0 NaN NaN Nan
1 1.130206 0.899758 NaN
2 1.390528 NaN NaN
3 NaN NaN NaN
4 1.401183 NaN NaN
5 NaN 1.142039 NaN

>>>df[df < 0]
a b c
0 NaN NaN -0.891527
1 NaN NaN -0.276587
2 NaN -1.472802 NaN
3 NaN -0.931329 NaN
4 NaN -0.162357 -0.959156
5 -0.127765 NaN -0.734434

所以现在我尝试对这些条件进行逻辑或操作作为索引条件:

>>>df[df > 0.5 or df < 0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\Ben\Anaconda\lib\site-packages\pandas\core\generic.py", line 692, in __nonzero__
.format(self.__class__.__name__))
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

我对此进行了一些研究,这是 numpy 的开发人员决定某些条件在任何或所有情况下可能不明确的基本特征。我不明白的是为什么检查该值是否 > 0.5 是否有效并检查其 < 0 是否有效,但检查其 > 0.5 或 < 0 是否无效。我也试过混合 bool 语法,但这个错误是可逃避的。有人可以解释为什么做 OR 会产生模棱两可的情况吗?

最佳答案

自定义类型不可能覆盖 Python 中 andor 的行为。也就是说,Numpy 不可能说它希望 [0, 1, 1] 和 [1, 1, 0][0, 1, 0]。这是因为 操作如何短路(参见 the documentation );本质上,andor 的短路行为意味着这些操作必须作为两个参数的两个独立真值工作;它们不能以某种同时使用两个操作数中的数据的方式组合它们的两个操作数(例如,按组件比较元素,这对于 Numpy 来说很自然)。

解决方案是使用按位运算符&|。但是,您必须对此小心,因为优先级不是您所期望的。

关于python - Pandas boolean DataFrame 选择歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25901259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com