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
子句中。尝试使用OR
或expr
子句。
【参考方案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:'是'