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

PySpark如何删除列名中EXXX_前缀并将所有列名转为大写

PySpark列名批量修改解决方案

你需要的前缀移除功能可以通过正则表达式实现,匹配e或E开头、后续跟任意数量数字、以下划线结尾的前缀,将其替换为空后再转大写即可,两种实现方式供你选择:


实现方案1:循环遍历修改(和你现有写法逻辑兼容)

和你当前的写法逻辑一致,只需要在转大写前加一步前缀移除的正则处理即可:

import re

for col in df.columns:
    # 先移除EXXX_前缀,再转大写
    processed_col = re.sub(r'^[eE]\d+_', '', col).upper()
    df = df.withColumnRenamed(col, processed_col)

实现方案2:一次性批量修改(更适合宽表,性能更优)

如果你的数据集列数很多,循环调用withColumnRenamed性能较低,你可以直接生成处理后的列名列表,用toDF一次性完成所有列名修改:

import re

# 生成处理后的列名列表,直接替换所有列名
processed_cols = [re.sub(r'^[eE]\d+_', '', col).upper() for col in df.columns]
df = df.toDF(*processed_cols)

效果验证

你给出的示例列名经过处理后结果如下:

  • 原列名e1013_var1 → 处理后VAR1
  • 原列名e1014_var2 → 处理后VAR2
  • 原列名e1015_var3 → 处理后VAR3
  • 原列名Data_date_stamp → 处理后DATA_DATE_STAMP

正则规则说明

^[eE]\d+_的匹配规则:

  • ^ 匹配字符串开头,确保只处理前缀位置的内容,不会误删列名中间的同类格式字段
  • [eE] 匹配小写e或大写E,兼容大小写两种前缀情况
  • \d+ 匹配1个或多个数字,适配任意长度的XXX编号
  • _ 匹配前缀末尾的下划线,避免误删仅以e+数字开头但没有下划线的正常列名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:09:03