如何将Pandas DataFrame中的<NA>(NAType)替换为np.nan格式的NaN
Pandas NAType替换为np.nan操作方法
从Spark DataFrame转换生成的Pandas DataFrame,默认会将Spark侧的空值转换为pandas._libs.missing.NAType类型的<NA>值,你可以通过以下几种方式替换为np.nan:
- 方法1:全表统一替换
直接调用Pandas内置替换方法全局匹配pd.NA进行替换,适合所有列都需要处理的场景:
import numpy as np import pandas as pd df = df.replace(pd.NA, np.nan)
- 方法2:指定列替换
如果仅部分列存在pd.NA,可以限定目标列操作,避免影响其他列的数据类型:
# 替换col1、col2两列中的pd.NA target_cols = ["col1", "col2"] df[target_cols] = df[target_cols].replace(pd.NA, np.nan)
- 方法3:Spark转换阶段提前处理
可以在Spark转Pandas的环节直接完成替换,减少后续单独处理的步骤:
# 开启Arrow加速转换后直接替换 spark.conf.set("spark.sql.execution.arrow.pyspark.enabled", "true") df = spark_df.toPandas().replace(pd.NA, np.nan)
注意:替换完成后,原本支持pd.NA的Pandas扩展数据类型(比如Int64、boolean等)会自动降级为支持np.nan的常规类型(比如float64、object),这是numpy本身的类型限制导致的正常现象
内容的提问来源于stack exchange,提问作者The Singularity
相关产品推荐
相关产品推荐

