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

如何使用PySpark去除列名中的重音符号?

去除DataFrame列名中的重音符号

针对你给出的带重音列名的DataFrame,这里提供一种通用解决方法(以PySpark为例):

核心思路

通过Unicode字符规范化,将带重音的字符分解为基础字符+独立重音标记,再过滤掉重音标记得到无重音列名,最后批量重命名DataFrame的列。

具体实现

import unicodedata
from pyspark.sql import SparkSession

# 初始化Spark会话
spark = SparkSession.builder.appName("RemoveColAccents").getOrCreate()

# 匹配你列结构的示例DataFrame
sample_data = [("val1", "val2", "val3", "val4")]
df = spark.createDataFrame(sample_data, ["Canadá", "México", "Lituânia", "Quênia"])

# 定义去重音函数
def strip_accents(column_name):
    return ''.join(
        char for char in unicodedata.normalize('NFKD', column_name)
        if not unicodedata.combining(char)
    )

# 批量重命名所有列
df = df.toDF(*[strip_accents(col) for col in df.columns])

# 验证结果
df.printSchema()

执行后,列名会转换为无重音形式,对应的Schema输出如下:

root
 |-- Canada: string (nullable = true)
 |-- Mexico: string (nullable = true)
 |-- Lituania: string (nullable = true)
 |-- Quenia: string (nullable = true)

原理说明

  • unicodedata.normalize('NFKD', column_name):将带重音的Unicode字符分解为基础字符和独立的重音标记(比如á会被拆分为a+重音符号)。
  • unicodedata.combining(char):判断字符是否为纯重音标记,返回True则过滤该字符,仅保留基础字母。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:02:17