PySpark如何批量删除DataFrame列名中的.0字符实现批量重命名
PySpark批量移除列名中
.0字符的操作方案 你可以任选以下两种常用实现方式:
方式1:使用select批量重命名(推荐,性能更高)
直接遍历列名做替换后用select一次性完成重命名,适合列数量较多的场景:
from pyspark.sql.functions import col # 遍历所有列名,替换`.0`后为列设置别名 processed_cols = [col(col_name).alias(col_name.replace('.0', '')) for col_name in spark_df.columns] # 生成重命名后的新DataFrame spark_df_new = spark_df.select(processed_cols)
如果你担心列名中间可能出现.0、只想替换末尾的.0后缀,可以调整为如下写法:
from pyspark.sql.functions import col processed_cols = [] for col_name in spark_df.columns: if col_name.endswith('.0'): # 仅截取掉末尾的`.0` new_name = col_name[:-2] else: new_name = col_name processed_cols.append(col(col_name).alias(new_name)) spark_df_new = spark_df.select(processed_cols)
方式2:循环调用withColumnRenamed
写法更直观,列数少的时候可以用:
spark_df_new = spark_df for old_col in spark_df.columns: new_col = old_col.replace('.0', '') spark_df_new = spark_df_new.withColumnRenamed(old_col, new_col)
操作完成后你可以执行spark_df_new.columns验证重命名结果。
内容的提问来源于stack exchange,提问作者Nabih Bawazir
相关产品推荐
相关产品推荐

