令人不悦的Error-TypeError: Cannot perform ‘ror_‘ with a dtyped [float64] array and scalar of type [bool]

本文主要是介绍令人不悦的Error-TypeError: Cannot perform ‘ror_‘ with a dtyped [float64] array and scalar of type [bool],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家好,我是老表,这个系列会记录我在编程中遇到的一些问题和解决方法,将直接以遇到的报错作为标题,这样更能方便其他学习者在浏览器中搜索到问题解决方法,也欢迎大家在评论、留言区多交流,谈谈自己的理解或者问题。

比如令人不悦的–requests.exceptions.ProxyError就是一个很好的示范。

今天在处理一个数据的时候,执行了一行代码,结果出现了大问题!!!

# 简单处理数据,去除推荐热搜和置顶热搜
wb_hot_data.drop(wb_hot_data[wb_hot_data['wb_rank']=='•' | pd.isna(wb_hot_data['wb_rank'])].index)



看着这一堆报错,我估计代码也很委屈!!!

先直接说怎么解决:

# 简单处理数据,去除推荐热搜和置顶热搜
wb_hot_data.drop(wb_hot_data[(wb_hot_data['wb_rank']=='•') | pd.isna(wb_hot_data['wb_rank'])].index)

也许你没有看出来改了什么,其实就是给wb_hot_data['wb_rank']=='•'加了一个括号。

接下来我们用示例数据说说这个错误是怎么产生的?

import pandas as pd
import numpy as npa=np.array([['a',2,3],['b',5,6],[np.NaN,8,9],['a',4,7]])
df1=pd.DataFrame(a,columns=list('ABC'))print(df1)'''A  B  C
0    a  2  3
1    b  5  6
2  nan  8  9
3    a  4  7
'''

我想删除A列中值为’a’或者None的行:

df1.drop(df1[df1['A']=='a' | pd.isna(df1['A'])].index)

这样写好像没什么毛病,但是运行就是会出现标题中讨厌的错误。

于是谷歌查了下,找到了一篇同错误的文章,评论区人博主在一个表达式两边加上括号,是优先级问题。
在这里插入图片描述
看到这个回答,我悟了,基础不扎实果然是会吃亏的。

df1.drop((df1[df1['A']=='a') | pd.isna(df1['A'])].index)
# 加个括号就可以啦'''A	B	C
1	b	5	6
2	nan	8	9
'''

我们会发现这里nan没有被删除?是因为初始化是这个nan已经被自动转换成字符串了,所以无法识别成nan被删除,这个问题我们其他文章再说,大家也可以留言说说自己看法。

补充讲一下另一种情况,当A列为数值类型数据,看看会怎么样?

import pandas as pd
import numpy as np# a=np.array([['a',2,3],['b',5,6],[np.NaN,8,9],['a',4,7]])
a=np.array([[1,2,3],[2,5,6],[np.NaN,8,9],[2,4,7]])
df1=pd.DataFrame(a,columns=list('ABC'))print(df1)'''A    B    C
0  1.0  2.0  3.0
1  2.0  5.0  6.0
2  NaN  8.0  9.0
3  2.0  4.0  7.0
'''# 我想删除A列中值为2或者None的行
df1.drop(df1[df1['A']==2 | pd.isna(df1['A'])].index)'''
A	B	C
1	2.0	5.0	6.0
2	NaN	8.0	9.0
3	2.0	4.0	7.0
'''

这个时候我们发现,没有报错,但是结果明显有问题,这是为什么呢?

这是因为数值类型是可以直接和bool类型数据进行运算,所以没有报错;结果出错是因为按运算符优先级,先进行2 | pd.isna(df1['A']),得出来的都是true(2是一个确定的数,在bool类型为true,true和数值进行比较会转变成1),然后和df1[‘A’]进行==运算,会发现只有第一行的1是满足的(1==ture),所以最后会删除第一行。
所以还是运算符优先级问题,还是加上()就可以解决问题啦。

df1.drop(df1[(df1['A']==2) | pd.isna(df1['A'])].index)
'''A	B	C
0	1.0	2.0	3.0
'''
# 为什么这里可以把nan值删除?大家可以讨论讨论

所以我们今天遇到的这个问题是由运算符优先级引起的 字符串类型数据和bool类型数据不能进行|运算。

最后附上Python运算符优先级和结核性一览表。

参考

[1] stackoverflow相关问题解答
https://stackoverflow.com/questions/20333435/pandas-comparison-raises-typeerror-cannot-compare-a-dtyped-float64-array-with
[2] Python运算符优先级和结核性一览表
http://c.biancheng.net/view/2190.html

这篇关于令人不悦的Error-TypeError: Cannot perform ‘ror_‘ with a dtyped [float64] array and scalar of type [bool]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/824744

相关文章

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

令人不想回忆的DDos

免责声明:本文仅做分享!!!    目录 DDos 介绍: 常见攻击方式: 基于TCP协议的攻击 基于icmp协议的攻击 web压力测试 攻击----> 1-工具脚本 MHDDos项目 LOIC(低轨道离子炮) HOIC(高轨道离子炮) HULK OWASP HTTP POST Tors Hammer 2-在线平台 防御----> 1-高防 2-C

ImportError: cannot import name ‘print_log‘ from ‘logging‘

mmcv升级到2.+后删除了很多 解决 查FAQ文档,找到 添加到mmcv.utils下即可

Caused by: org.hibernate.MappingException: Could not determine type for: org.cgh.ssh.pojo.GoodsType,

MappingException:这个主要是类映射上的异常,Could not determine type for: org.cgh.ssh.pojo.GoodsType,这句话表示GoodsType这个类没有被映射到

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

编译linux内核出现 arm-eabi-gcc: error: : No such file or directory

external/e2fsprogs/lib/ext2fs/tdb.c:673:29: warning: comparison between : In function 'max2165_set_params': -。。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。 。。。。。。。。 host asm: libdvm <= dalvik/vm/mterp/out/Inte

Unstructured cannot write mode RGBA as JPEG 错误解决

Unstructured cannot write mode RGBA as JPEG 错误解决 0. 错误详细1. 解决方法 0. 错误详细 Image Extraction Error: Skipping the failed imageTraceback (most recent call last):File "/root/miniconda3/envs/learn-y

收藏:解决 pip install 出现 error: subprocess-exited-with-error 错误的方法

在使用 pip 安装 Python 包时,有时候会遇到 error: subprocess-exited-with-error 错误。这种错误通常是由于 setuptools 版本问题引起的。本文将介绍如何解决这一问题 当你使用 pip install 安装某个 Python 包时,如果 setuptools 版本过高或过低,可能会导致安装过程出错,并出现类似以下错误信息:error: subpr

Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 (debug笔记)

Nn criterions don’t compute the gradient w.r.t. targets error「pytorch」 ##一、 缘由及解决方法 把这个pytorch-ddpg|github搬到jupyter notebook上运行时,出现错误Nn criterions don’t compute the gradient w.r.t. targets error。注:我用

Cannot read property ‘length‘ of null while opening vscode terminal

同一问题地址:Cannot read property ‘length’ of null while opening vscode terminal 问题描述 One day, 我在ubuntu 18.04下用vscode打开一个项目,并想和往常一样在vscode使用终端,发现报错Cannot read property 'length' of null。 解决 打开setting.jso