You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark中批量替换DataFrame所有列名中的指定字符串?

在Apache Spark中批量替换DataFrame列名中的指定字符串

方法1:使用selectExpr批量生成重命名逻辑

这是适配所有Spark版本的通用方案,核心是通过列表推导式遍历所有列,对每个列名应用替换规则,同时保留原列的数据:

# 示例:将列名中的双下划线替换为单下划线
df = df.selectExpr([f"`{col}` AS {col.replace('__', '_')}" for col in df.columns])

如果列名包含空格、特殊符号,必须用反引号`包裹原列名,避免Spark SQL语法错误。如果要替换双空格为单空格,只需把replace('__', '_')改成replace(' ', ' ')即可。

方法2:循环调用withColumnRenamed

逻辑直观易懂,遍历每一列,判断列名是否需要修改,若需要则执行重命名:

# 遍历所有列进行批量重命名
for old_col_name in df.columns:
    new_col_name = old_col_name.replace('__', '_')
    if old_col_name != new_col_name:
        df = df.withColumnRenamed(old_col_name, new_col_name)

这种方法适合列数量不多的场景,无需编写SQL表达式,代码可读性强。

方法3:Spark 3.1+ 专属简洁写法

Spark 3.1及以上版本新增了支持函数参数的withColumnsRenamed方法,可直接对所有列名应用替换逻辑,代码最简洁:

# Spark 3.1+ 可用:传入lambda函数批量替换列名
df = df.withColumnsRenamed(lambda col: col.replace('__', '_'))

内容的提问来源于stack exchange,提问作者Rita Carolina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:05:21