使用PySpark toPandas()转换含布尔列DataFrame时遇numpy报错求助
解决PySpark DataFrame调用toPandas()时的numpy.bool属性错误
这个错误是因为numpy 1.24及以上版本移除了numpy.bool属性,而你使用的PySpark版本(低于3.3.0)还在依赖这个旧属性,导致类型转换时触发报错。
优先推荐的解决方案(无需手动转换列类型)
- 升级PySpark到3.3.0及以上版本:这些版本已经适配了numpy的API变化,能正常处理boolean列转Pandas的逻辑。
- 降级numpy到1.23.x版本:执行命令:
降级后PySpark的旧版本就能正常调用pip install numpy==1.23.5 --force-reinstalltoPandas()。
临时 workaround(手动转换列类型)
如果暂时无法升级/降级,可以手动将boolean列转换为int类型(False→0,True→1),转成Pandas后再按需转回bool类型:
from pyspark.sql.functions import col # PySpark端转换为int类型 df = df.withColumn("pass", col("pass").cast("int")) # 转成Pandas后再转回bool(可选) df_pandas = df.toPandas() df_pandas["pass"] = df_pandas["pass"].astype(bool)
内容的提问来源于stack exchange,提问作者Pedro Daumas
相关产品推荐
相关产品推荐

