使用Python筛选CSV中PayPal欺诈交易时ValueError报错如何解决
报错原因
- 逻辑运算符使用错误:Python原生的
and/or仅支持单个布尔值的逻辑判断,而你写的两个筛选条件返回的都是和DataFrame行数一致的布尔序列(Series),pandas无法直接将一整列布尔值转换为单个True/False结果,因此抛出该歧义错误。在pandas中实现逐行的多条件逻辑匹配,需要使用按位运算符:&对应“同时满足(与)”,|对应“满足其一(或)”,~对应“取反(非)”。 - 字段名拼写错误:你的代码中误将标签字段
label写为了babel,该字段不存在,即使逻辑运算符修正后也会触发字段不存在报错。 - 额外注意:使用按位运算符时,每个独立筛选条件必须用括号包裹,因为按位运算符的运算优先级高于
==这类比较运算符,不加括号会导致运算顺序错误,得到不符合预期的结果。
正确实现代码
同时筛选paypal支付且为欺诈的交易,写法如下:
# 直接筛选 df_fraud[(df_fraud.paymentMethod == 'paypal') & (df_fraud.label == 1)] # 如需保存为新DataFrame df_paypal_fraud = df_fraud[(df_fraud.paymentMethod == 'paypal') & (df_fraud.label == 1)]
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

