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

PySpark实现含ADDRESS字段列的批量重命名通用方案

PySpark 统一重命名含ADDRESS的列

以下是可直接嵌入数据处理流水线的PySpark代码,能自动识别所有名称包含ADDRESS的列——不管列名带不带前缀(比如T_)——统一重命名为S_ADDRESS1、S_ADDRESS2、S_ADDRESS3这类规范格式:

from pyspark.sql import SparkSession
import re

# 初始化SparkSession(流水线中已存在则跳过)
spark = SparkSession.builder.appName("AddressStandardization").getOrCreate()

# 读取数据源(示例为CSV,可替换为Parquet、JSON等你实际的数据源格式)
df = spark.read.csv("your_input_path", header=True, inferSchema=True)

# 定义列名标准化逻辑
def standardize_address_col(col_name):
    # 正则匹配提取ADDRESS后的数字,兼容大小写、带前缀/不带前缀的情况
    match = re.search(r'ADDRESS(\d+)', col_name.upper())
    if match:
        num = match.group(1)
        return f"S_ADDRESS{num}"
    # 非ADDRESS相关列保持原名
    return col_name

# 应用重命名规则
renamed_df = df.toDF(*[standardize_address_col(col) for col in df.columns])

# 验证结果(流水线中可注释,仅调试用)
renamed_df.printSchema()

# 保存处理后的数据(按需调整输出格式和路径)
renamed_df.write.csv("your_output_path", header=True, mode="overwrite")

关键逻辑说明

  • 正则r'ADDRESS(\d+)'会忽略列名的大小写和前缀,精准捕获ADDRESS后的数字部分,不管是ADDRESS1、T_ADDRESS2还是TADDRESS3都能匹配。
  • 遍历所有列仅修改符合规则的地址列,不会改动其他业务列,适配多文件不同列名格式的场景。
  • 代码可直接对接现有流水线,只需替换数据源读取和输出的对应方法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:20:52