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

在Deep Note中用Pandas处理西语开放数据,移除DataFrame重音及ñ字符

处理Pandas中西班牙文重音字符的无重音转换

方法一:使用Python自带unicodedata库(无需额外安装)

利用Unicode字符分解特性,剥离重音标记保留基字符:

  1. 导入依赖并定义转换函数:
import pandas as pd
import unicodedata

def strip_accents(text):
    # 将字符分解为基字符+重音标记的组合
    normalized_text = unicodedata.normalize('NFD', str(text))
    # 过滤掉重音标记(Mn类为非间距组合字符)
    return ''.join([char for char in normalized_text if unicodedata.category(char) != 'Mn'])
  1. 读取数据并应用转换:
datos = pd.read_csv("/work/avisos", delimiter=';', encoding="ISO-8859-1")
# 对目标文本列应用转换(替换`contenido`为你的实际列名)
datos['contenido_sin_acento'] = datos['contenido'].apply(strip_accents)
# 若需直接覆盖原列:
# datos['contenido'] = datos['contenido'].apply(strip_accents)

方法二:使用unidecode库(更全面的字符拉丁化)

该库可直接将带重音的字符转为对应无重音形式,包括把ñ转为n,适合需要完全拉丁化的场景:

  1. 安装并导入库:
!pip install unidecode
from unidecode import unidecode
  1. 应用转换:
# 直接对列使用unidecode函数
datos['contenido_sin_acento'] = datos['contenido'].apply(lambda x: unidecode(str(x)))

注意事项

  • 处理前确保文本列为字符串类型,若存在缺失值,可先填充空字符串:
datos['contenido'] = datos['contenido'].fillna('').astype(str)
  • 两种方法差异:unicodedata会保留ñ(它是独立Unicode字符,非重音标记),而unidecode会将其转为n,可根据需求选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:45:30