如何用Python Pandas将DataFrame中Unicode转换为ASCII并自定义映射
完整实现字符转换与DataFrame列生成方案
没问题,我来帮你把convertASCII函数补全,并且告诉你怎么用它处理DataFrame生成新的ASCII文本列。
首先,先把你的函数补全,核心逻辑是遍历每个字符,匹配到映射字典里的字符就替换,否则保留原字符:
characterMap = {u'\u00E7': 'c', u'\u00C7' : 'C', u'\u011F' : 'g', u'\u011E' : 'G', u'\u00F6': 'o', u'\u00D6' : 'O', u'\u015F' : 's', u'\u015E' : 'S', u'\u00FC' : 'u', u'\u00DC' : 'U' , u'\u0131' : 'i', u'\u0049' : 'I', u'\u0259' : 'e', u'\u018F' : 'E'} def convertASCII(word): asciiWord = "" # 统一转成字符串并去除末尾空白,避免非字符串类型报错 word = str(word).rstrip() for c in word: # 检查字符是否在映射字典中,是则替换,否则保留原字符 if c in characterMap: asciiWord += characterMap[c] else: asciiWord += c return asciiWord
接下来,用这个函数处理DataFrame的列非常简单,直接用apply方法就能批量处理每一行的文本,生成新列:
import pandas as pd # 假设你的DataFrame是这样的(可以替换成你自己的DataFrame) df = pd.DataFrame({ 'original_text': [ 'G\u00FCzel bir g\u00FCn', 'T\u00FCrk\u00E7e metin', 'I\u0131zmir \u015Fehir' ] }) # 应用转换函数,生成新的ASCII列 df['ascii_text'] = df['original_text'].apply(convertASCII) # 查看结果 print(df)
运行后你会得到转换后的结果:
original_text ascii_text 0 Güzel bir gün Guzel bir gun 1 Türkçe metin Turkce metin 2 Izmir şehir Izmir sehir
额外小技巧
如果你的需求是转换更多通用的Unicode字符,而不仅仅是字典里的这些,可以试试unidecode库(需要先安装:pip install unidecode),它能自动处理绝大多数Unicode到ASCII的转换:
from unidecode import unidecode def convertASCII_unidecode(word): return unidecode(str(word).rstrip()) # 同样用apply处理列 df['ascii_text_unidecode'] = df['original_text'].apply(convertASCII_unidecode)
不过如果有特定的替换规则(比如你自定义的字符映射),还是用你自己的字典更能保证转换结果符合预期。
内容的提问来源于stack exchange,提问作者Bao Thai
相关产品推荐
相关产品推荐

