ValueError 1:无法将列转换为布尔值:请使用 '&' 表示 'and'、'|' for 'or', '~' for 'not' 在构建 DataFrame 布尔表达式时

Posted

技术标签:

【中文标题】ValueError 1:无法将列转换为布尔值:请使用 \'&\' 表示 \'and\'、\'|\' for \'or\', \'~\' for \'not\' 在构建 DataFrame 布尔表达式时【英文标题】:ValueError 1: Cannot convert column into bool: please use '&' for 'and', '|' for 'or', '~' for 'not' when building DataFrame boolean expressionsValueError 1:无法将列转换为布尔值:请使用 '&' 表示 'and'、'|' for 'or', '~' for 'not' 在构建 DataFrame 布尔表达式时 【发布时间】:2021-09-09 09:30:35 【问题描述】:

在下面的代码中:

retail_sales_transaction = glueContext.create_dynamic_frame.from_catalog(
    database="conform_main_mobconv",
    table_name="retail_sales_transaction"
)

df_retail_sales_transaction= (retail_sales_transaction.toDF().filter((f.col('dh_audit_source_system_id')=='SRC_JDAESO') & (f.col('country_code') in ('AU','NZ')))) \
.select("transaction_id","transaction_key","transaction_timestamp","personnel_key","retail_site_id","personnel_role","country_code","business_week","dh_audit_start_timestamp")

运行上述语句时出错: ValueError:无法将列转换为布尔值:请使用 '&' 表示 'and'、'|' for 'or', '~' for 'not' 在构建 DataFrame 布尔表达式时。

【问题讨论】:

我认为问题出在in 子句中。尝试使用ORexpr 子句。 【参考方案1】:

尝试使用.isin,而不是in

f.col('country_code').isin('AU','NZ')

【讨论】:

以上是关于ValueError 1:无法将列转换为布尔值:请使用 '&' 表示 'and'、'|' for 'or', '~' for 'not' 在构建 DataFrame 布尔表达式时的主要内容,如果未能解决你的问题,请参考以下文章

数字后带有减号的 CSV 文件。 “ValueError:无法将字符串转换为浮点数:”

不兼容的类型:条件表达式 void 中的错误类型无法转换为布尔值。请协助

One Hot Encoding:ValueError:无法将字符串转换为float:'是'

ValueError:无法将字符串转换为float:'“”'

ValueError:无法将字符串转换为浮点数:“?”

ValueError:无法将字符串转换为浮点数:'n'