当前位置:网站首页>Unpleasant error typeerror: cannot perform 'ROR_‘ with a dtyped [float64] array and scalar of type [bool]
Unpleasant error typeerror: cannot perform 'ROR_‘ with a dtyped [float64] array and scalar of type [bool]
2022-07-06 15:20:00 【Jane said Python】
Hello everyone , I'm an old watch , This series will record some problems and solutions I encounter in programming , Will directly take the error report encountered as the title , In this way, it is more convenient for other learners to search for problem solutions in the browser , You are also welcome to comment on 、 More communication in the message area , Talk about your understanding or problems .
such as Unpleasant –requests.exceptions.ProxyError Is a good demonstration .
Today, when processing a data , Executed a line of code , As a result, there was a big problem !!!
# Simple data processing , Remove recommended hot search and top hot search
wb_hot_data.drop(wb_hot_data[wb_hot_data['wb_rank']=='•' | pd.isna(wb_hot_data['wb_rank'])].index)
Look at this pile of errors , I guess the code is also wronged !!!
Let's talk directly about how to solve :
# Simple data processing , Remove recommended hot search and top hot search
wb_hot_data.drop(wb_hot_data[(wb_hot_data['wb_rank']=='•') | pd.isna(wb_hot_data['wb_rank'])].index)
Maybe you don't see what has changed , In fact, it's for wb_hot_data['wb_rank']=='•'
Added a bracket .
Next, let's talk about how this error occurs with example data ?
import pandas as pd
import numpy as np
a=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 '''
I want to delete A The value in the column is ’a’ perhaps None The line of :
df1.drop(df1[df1['A']=='a' | pd.isna(df1['A'])].index)
There seems to be nothing wrong with writing like this , But when running, there will be annoying errors in the title .
So Google checked , eureka An article with the same mistake , Bloggers in the comment area put parentheses around an expression , It's a priority issue .
See the answer , I understand , If you don't have a solid foundation, you will suffer losses .
df1.drop((df1[df1['A']=='a') | pd.isna(df1['A'])].index)
# Just add a bracket
''' A B C 1 b 5 6 2 nan 8 9 '''
We'll find here nan Not deleted ? Because the initialization is this nan Has been automatically converted to a string , So it can't be recognized as nan Be deleted , Let's talk about this in other articles , You can also leave a message to say your views .
Add another case , When A Column as numeric data , See what happens ?
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 '''
# I want to delete A The value in the column is 2 perhaps None The line of
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 '''
At this time, we found out , No report error , But the result is obviously problematic , Why is that ?
This is because numeric types can be directly associated with bool Type data , So there was no error ; The result is wrong because by operator priority , to 2 | pd.isna(df1['A'])
, What comes out is true(2 Is a definite number , stay bool The type is true,true Comparing with the numerical value will turn into 1), And then df1[‘A’] Conduct ==
operation , You'll find only the first line 1 Is satisfied (1==ture), So the first line will be deleted .
So it's still operator priority , Or add ()
You can solve the problem .
df1.drop(df1[(df1['A']==2) | pd.isna(df1['A'])].index)
''' A B C 0 1.0 2.0 3.0 '''
# Why can we put nan Value delete ? You can talk about
So the problem we have today is caused by operator priority String type data and bool Type data cannot be |
operation .
The last attached Python List of operator priority and specificity .
Reference resources
[1] stackoverflow Answer relevant questions
https://stackoverflow.com/questions/20333435/pandas-comparison-raises-typeerror-cannot-compare-a-dtyped-float64-array-with
[2] Python List of operator priority and specificity
http://c.biancheng.net/view/2190.html
边栏推荐
- Global and Chinese markets for GaN on diamond semiconductor substrates 2022-2028: Research Report on technology, participants, trends, market size and share
- The latest query tracks the express logistics and analyzes the method of delivery timeliness
- Video scrolling subtitle addition, easy to make with this technique
- 几款开源自动化测试框架优缺点对比你知道吗?
- Public key box
- MySQL数据库(一)
- MySQL数据库(四)事务和函数
- How to solve the poor sound quality of Vos?
- Mysql的事务
- 51 lines of code, self-made TX to MySQL software!
猜你喜欢
随机推荐
MySQL transactions
Portapack application development tutorial (XVII) nRF24L01 launch B
Install and run tensorflow object detection API video object recognition system of Google open source
Global and Chinese market of portable and handheld TVs 2022-2028: Research Report on technology, participants, trends, market size and share
UCORE lab5 user process management experiment report
HackTheBox-Emdee five for life
MySQL数据库(二)DML数据操作语句和基本的DQL语句
Global and Chinese market of barrier thin film flexible electronics 2022-2028: Research Report on technology, participants, trends, market size and share
Eigen User Guide (Introduction)
STC-B学习板蜂鸣器播放音乐2.0
Crawler series of learning while tapping (3): URL de duplication strategy and Implementation
C4D quick start tutorial - creating models
线程及线程池
pytest
ucore lab1 系统软件启动过程 实验报告
ucore lab 2
Pedestrian re identification (Reid) - Overview
Nest and merge new videos, and preset new video titles
Contest3145 - the 37th game of 2021 freshman individual training match_ A: Prizes
软件测试Bug报告怎么写?