如何将所有StringType列批量转换为DoubleType并简化为单代码行
可以通过单代码行实现该转换需求,可根据实际场景选择对应写法:
1. 全列强制转换方案
适用于确认数据集所有列都需要转换为DoubleType的场景:
df = df.select(*[col(c).cast("double").alias(c) for c in df.columns])
2. 针对性转换方案(更稳妥)
仅对原数据类型为StringType的列执行转换,其余类型的列保持原有属性不变,避免无意义的重复转换:
df = df.select(*[col(c).cast("double").alias(c) if t == "string" else col(c) for c, t in df.dtypes])
注意事项
- 执行上述代码前需要提前导入PySpark的col函数:
from pyspark.sql.functions import col - 若数据集中存在无法转为数值的字符串,转换后对应值会变为null,可提前结合
when+isnan函数做异常值处理
内容的提问来源于stack exchange,提问作者RoboRaz
相关产品推荐
相关产品推荐

