相信很多人在使用pandas过程中遇到过如标题所示的报错,即真值模糊
那么出现这种问题的原因和解决办法是什么?
场景模拟:
import pandas as pd
import numpy as np
#创建数据框df
df=pd.DataFrame(np.arange(12).reshape((4,3)),columns=list('abc'))
df
#例子
if df['c']>5:
pass
上面这种方式就是典型的真值模糊错误
原因:
df[‘c’]>5 返回的结果是一个bool类型的series数据结构,不是一个bool值 True or False
解决方法:
对于真值模糊的原因一般是在对行列数据处理时用以往的python思维去做,而忽略了pandas的向量化操作
#pandas的向量化操作map/apply
df['c']=df['c'].map(lambda x: np.nan if x>5 else x)
df