如何在python中删除列中所有可能的重音符号

2024-09-29 21:43:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手。我有一个带有列的数据框,名为'Name'。该列包含不同类型的重音符号。我正在试着去掉那些口音。例如,ruben=>;ruben,zuniga=zuniga等。我编写了以下代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import re
import unicodedata


data=pd.read_csv('transactions.csv')

data.head()

nm=data['Name']
normal = unicodedata.normalize('NFKD', nm).encode('ASCII', 'ignore')

我得到错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-41-1410866bc2c5> in <module>()
      1 nm=data['Name']
----> 2 normal = unicodedata.normalize('NFKD', nm).encode('ASCII', 'ignore')

TypeError: normalize() argument 2 must be unicode, not Series

任何帮助都将不胜感激。提前谢谢。你知道吗


Tags: csvnameimportdataasasciiencodepd
2条回答

在一列中尝试以下操作:

nm = nm.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8')

对多个列尝试此操作:

obj_cols = data.select_dtypes(include=['O']).columns
data.loc[obj_cols] = data.loc[obj_cols].apply(lambda x: x.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8'))

它之所以给您这个错误是因为normalize需要第二个参数的字符串,而不是字符串列表。我在网上找到了一个例子:

unicodedata.normalize('NFKD', u"Durrës Åland Islands").encode('ascii','ignore')
'Durres Aland Islands'

相关问题 更多 >

    热门问题