在使用or条件筛选结果数据帧时出现问题。我希望我的结果df提取所有列var值,这些值高于0.25,低于-0.25。

下面的逻辑给了我一个模糊的真值,但是当我将这个过滤拆分为两个单独的操作时,它会起作用。这里发生了什么?不知道在哪里使用建议的a.empty(), a.bool(), a.item(),a.any() or a.all()。

result = result[(result['var']>0.25) or (result['var']

你应该添加更多的上下文。我不明白结果是什么,你想做什么。

用|代替or。

这里有一个解决办法:abs(result['var'])>0.25。

相关:熊猫布尔索引的逻辑运算符

在or和andPython statements require once truth值。这些都是被视为pandasambiguous所以你应该使用"位"|(或&)或(和)操作: </P >

result = result[(result['var']>0.25) | (result['var']

这些都是负载的方法,这些种高产的元数据库结构的平衡or(或and)。 </P >

只是添加一些更多的解释到这个声明: </P >

在thrown例外是当你想得到的bool一pandas.Series: </P >

>>> import pandas as pd

>>> x = pd.Series([1])

>>> bool(x)

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

什么是你的生命是一个地方在运营商的implicitly转换的operands到bool(你用or但它也发生and方法,if和while): </P >

>>> x or x

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

>>> x and x

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

>>> if x:

...     print('fun')

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

>>> while x:

...     print('fun')

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

这些besides 4 statements有几种是Python函数是隐藏的一些bool电话(any状,all,filter,…………………),这些都是不normally problematic与pandas.Series但设计完备的我想提到这些。 </P >

在你的案例中的例外是真的helpful T,T,因为它不值得一提,右键的方案。方法and和or你可以使用(如果你想元明智的方法): </P >

numpy.logical_or: </P >

>>> import numpy as np

>>> np.logical_or(x, y)

或是|算子: </P >

>>> x | y

numpy.logical_and: </P >

>>> np.logical_and(x, y)

或是&算子: </P >

>>> x & y

如果你是使用运营商,那么让我相信你,因为你的parenthesis集correctly的算子值优先。 </P >

有几个是逻辑函数的numpy这工作应该是pandas.Series。。。。。。。 </P >

在这些方案中的例外是suited更多,如果你encountered当它做if或while。。。。。。。我会shortly explain each of这些: </P >

如果你想检查如果你的系列是空的: </P >

>>> x = pd.Series([])

>>> x.empty

True

>>> x = pd.Series([1])

>>> x.empty

False

Python normally interprets的length大学(list状容器,tuple,…………………)作为真理的值,如果它有好的布尔函数的显式的解释。所以如果你想在Python的类的检查,你能做的:if x.size或if not x.empty去大学的if x。。。。。。。 </P >

如果你的Series包含唯一的一个布尔值: </P >

>>> x = pd.Series([100])

>>> (x > 50).bool()

True

>>> (x < 50).bool()

False

如果你想检查的第一个和你的只读项系列(状.bool()厂,但夏娃的方法不是布尔contents): </P >

>>> x = pd.Series([100])

>>> x.item()

100

如果你想检查是否所有或任何item是非零的,不是空的或不假: </P >

>>> x = pd.Series([0, 1, 2])

>>> x.all()   # because one element is zero

False

>>> x.any()   # because one (or more) elements are non-zero

True

哦,我的上帝!你的评论"如果你使用的是操作符,那么确保你的括号设置正确,因为操作符的优先级"最终解决了让我发疯的问题。这是一个非常重要的问题,在我看来,也是一个被忽视的问题。谢谢您!

我读了很长时间的最有见地的答案之一

为什么这些python操作符不能重载以处理pandas系列?

@在python中,muditjain无法直接重载and、or和not。这些运算符直接使用操作数返回的bool。在某种程度上,pandas/numpy过载已经导致ValueError上升,因为他们认为这样一个数据结构的真实值不明确。

布尔逻辑的方法,使用&和|。。。。。。。 </P >

np.random.seed(0)

df = pd.DataFrame(np.random.randn(5,3), columns=list('ABC'))

>>> df

A         B         C

0  1.764052  0.400157  0.978738

1  2.240893  1.867558 -0.977278

2  0.950088 -0.151357 -0.103219

3  0.410599  0.144044  1.454274

4  0.761038  0.121675  0.443863

>>> df.loc[(df.C > 0.25) | (df.C < -0.25)]

A         B         C

0  1.764052  0.400157  0.978738

1  2.240893  1.867558 -0.977278

3  0.410599  0.144044  1.454274

4  0.761038  0.121675  0.443863

看到什么是发生,你得到一个column for each of布尔值的比较,如 </P >

df.C > 0.25

0     True

1    False

2    False

3     True

4     True

Name: C, dtype: bool

当你有多个标准,你将得到的多柱式的returned。。。。。。。这就是为什么在我的逻辑是ambiguous。。。。。。。利用and或ortreats每柱separately第一,所以你需要减少到一个单一的那一列的布尔值。例如,如果看到任何价值或全值在每一系列的是真的。 </P >

# Any value in either column is True?

(df.C > 0.25).any() or (df.C < -0.25).any()

True

# All values in either column is True?

(df.C > 0.25).all() or (df.C < -0.25).all()

False

一个convoluted方式来达到同样的事是拉链,所有的这些列在一起,在适当的情况下和颈静脉孔区的逻辑。 </P >

>>> df[[any([a, b]) for a, b in zip(df.C > 0.25, df.C < -0.25)]]

A         B         C

0  1.764052  0.400157  0.978738

1  2.240893  1.867558 -0.977278

3  0.410599  0.144044  1.454274

4  0.761038  0.121675  0.443863

用更多的细节,参考到布尔密封中的文档。 </P >

或者,alternatively,你可以使用运营商的模块。更多的详细信息,这里是Python的文档 </P >

import operator

import numpy as np

import pandas as pd

np.random.seed(0)

df = pd.DataFrame(np.random.randn(5,3), columns=list('ABC'))

df.loc[operator.or_(df.C > 0.25, df.C < -0.25)]

A         B         C

0  1.764052  0.400157  0.978738

1  2.240893  1.867558 -0.977278

3  0.410599  0.144044  1.454274

4  0.761038  0.121675  0.4438

这场精彩的答案explains甚好什么是发生和提供解决方案。我很喜欢到添加另一个解决方案,这可能是针对适合在类似的案例:使用方法:query </P >

result = result.query("(var > 0.25) or (var < -0.25)")

也看到http:/ / / pandas.pydata.org pandas文档/稳定/ indexing.html #密封查询。 </P >

(一些试验与一帧I’m目前工作与suggest说,这个方法是一个位的slower比使用按位操作是一系列的布尔运算:2 ms vs. 870μS) </P >

一件协会警告:至少在一个情况,这是不straightforward column names是当发生的概率是Python表达式。我有WT_38hph_IP_2列名,WT_38hph_input_2和log2(WT_38hph_IP_2/WT_38hph_input_2)和想对颈静脉孔区下面的查询:"(log2(WT_38hph_IP_2/WT_38hph_input_2) > 1) and (WT_38hph_IP_2 > 20)" </P >

我得到下面的级联的例外: </P >

KeyError: 'log2'

UndefinedVariableError: name 'log2' is not defined

ValueError:"log2" is not a supported function

我猜这发生,因为查询分析器是试图做出让某个东西从第一双柱式的去大学的识别中的表达与名牌大学的第三柱。 </P >

一种可能的workaround是这里提出的。 </P >

python真值是什么意思_关于python:系列的真值是模棱两可的。相关推荐

  1. python文本结构化处理_在Python中标记非结构化文本数据

    python文本结构化处理 Labelled data has been a crucial demand for supervised machine learning leading to a n ...

  2. python交互式和文件式_使用Python创建和自动化交互式仪表盘

    python交互式和文件式 In this tutorial, I will be creating an automated, interactive dashboard of Texas COVI ...

  3. python做审计底稿视频_最新Python教学视频,每天自学俩小时,让你offer拿到手软...

    2020最新Python零基础到精通资料教材,干货分享,新基础Python教材,看这里,这里有你想要的所有资源哦,最强笔记,教你怎么入门提升!让你对自己更加有信心,重点是资料都是免费的,免费!!! 如 ...

  4. python十大必备知识_学Python必备的基础知识

    学Python必备的基础知识 1.基本概念 表达式:就是一个类似于数学公式的东西,一般仅仅用了计算一些结果 ,不会对程序产生实质性的影响,如9+3; 语句:在程序中语句一般需要完成某种功能,比如打印信 ...

  5. 学python的有哪些好书_学习python有哪些好书和学习方法?

    不请自来~ 上干货 <Python数据分析>作者: [印尼]Ivan Idris Python是一种多范型编程语言,既适用于面向对象的应用开发,又适合函数式设计模式.Python已经成为数 ...

  6. python怎么做软件程序_看 Python 超级程序员使用什么开发工具

    Python超级程序员使用的开发工具 我以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题: 当前你的主要开发任务是什么? 你在项目中使用的电脑是怎样的? 你使用什么IDE开发 ...

  7. python 按需加载_基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)...

    基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 文档转换为PDF有些图片无法完全显示,请移步我的博客查看 完成 ...

  8. python使用函数的目的_在Python 3.x中经常看到定义函数有一个单独的 * 参数?定义这样参数的目的是?怎样对其取值呢?...

    参数在python中总是通过赋值进行传递的.在默认情况下,参数是通过其位置进行匹配的,从左到右,而且必须精确的传递和函数头部参数名一样多的参数. 这种默认的传递方式很简单 def f(a,b,c): ...

  9. python输出一个月日历表_关于python一个月总结

    今天是6月16了,我在上个月19号的时候敲下了人生中的第一行python的hello world代码.碰巧今天周末,明天又开始忙碌的上(mo)班(yu).趁着现在对这个月的学习做一个总结,也是理清思路 ...

  10. python中nomodulenamed怎么解决_关于 python ImportError: No module named 的问题

    今天在 centos 下安装 python setup.py install 时报错:ImportError: No module named sysconfig, 当时急着用,就顺手直接源码编译了一 ...

最新文章

  1. 除非换行符在格式字符串中,否则为什么在调用后printf不会刷新?
  2. Python Cookbook (2) 文件
  3. 计算机应用类专业综合冲刺卷,2009年计算机应用类专业综合知识模拟试卷.doc
  4. 用DeBug的方式,带你掌握HBase文件在Snapshot的各种变化
  5. python里的pip有什么用_python的pip有什么用
  6. Out of resources when opening file './xxx.MYD' (Errcode: 24)解决方法
  7. 微信公众帐号开发教程第13篇-图文消息全攻略
  8. 海信CAS计算机辅助手术系统,计算机辅助手术系统(CAS)
  9. 肯普纳级数收敛性的证明
  10. 局域网视频共享 php,window_Windows 7媒体库管理音视频文件实现局域网共享, 任务分析 多台电脑连接的家 - phpStudy...
  11. C语言程序设计基础练习
  12. 美媒:软银售ARM中国子公司51%股权,暴露美国痛处
  13. windows freeSSHd搭建SFtp服务器
  14. mysql设置report_host语法_MySQL_mysqlreport 中文文档,mysqlreport 以很友好的方式显示 - phpStudy...
  15. CDN 技术研究——Cache集群通信
  16. 群晖 NAS DSM 系统,只要三步使用 Docker 安装迅雷远程下载
  17. 钉钉申请发起后台提现接口
  18. 布兰迪斯大学计算机科学专业,美国布兰迪斯大学计算机科学博士专业介绍
  19. 如何ping网站的IP地址
  20. 如何用废品DVD驱动器制作基于GRBL + CNC V3 Shield的绘图仪

热门文章

  1. 语音识别哪家强 讯飞 搜狗 百度 阿里还是腾讯
  2. 安装DCU-Z100(ZiFang)
  3. 记录一个坑:mouseleave事件
  4. Material-UI 5 即将推出
  5. 比尔·盖茨:AI将为每人创造一个私人助手 科技市场面临洗牌?
  6. 深度分析中国高端投教市场第一股“九方财富”的投资价值
  7. 轻量级数据库sqlite,spring boot+sqlite的配置详解 (二)
  8. 页面锚点链接点击平滑滚动
  9. 使用 Flutter 模仿美团 App
  10. 多个路由器的局域网终端设备的资源访问