【问题标题】:Can't decode accent properly in pandas dataframe无法在熊猫数据框中正确解码重音
【发布时间】:2020-03-25 20:09:28
【问题描述】:

我正在尝试为 Dataphile(我的 YouTube 频道)制作“获得奥运奖牌最多的柔道运动员”的条形图比赛。 这是我的问题:在我的数据集 (csv) 中,一些运动员的名字中有口音,我无法正确解码。

例如,在第 5 行的my dataset 中,ahtlete 的名字是“Andreas Tölzer”。

这是我的代码:

years = [str(y) for y in range(1972,2020, 4)]
sex = ["mens", "womens"]
cat = ["extra-lightweight", "lightweight", "half-lightweight", "half-middleweight", "middleweight", "half-heavyweight", "heavyweight", "open-class"]

df_results = pd.DataFrame(columns=["Athlete"] + years)

all_df = {}

for s in sex: # gets all sexes
    for c in cat: #gets all weight categories
        for y in years: # gets all years with summer olympics
            try:
                all_df[y] = pd.read_csv(r"C:\Users\joris\Coding\judo_olympics\olympics_summer_" + y + "_JUD_" + s + "-" + c +"_final_standings.csv")
                df_med = all_df[y].head(4)[["Athlete"]]
                iter_years = iter(years)
                for w in years:
                    if int(w) >= int(y):
                        df_med.insert(len(df_med.columns), w, 1)
                    else:
                        df_med.insert(len(df_med.columns), w, 0)
                df_results = df_results.append(df_med)
            except FileNotFoundError:
                pass    
df_results = df_results.groupby("Athlete").sum()

df_results.index = df_results.index.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8') # got that from the internet

Here,我们可以在输出中看到运动员的名字没有被正确解码。

我想要简单地将带重音的字母更改为没有重音的相同字母(例如:“é”将变为“e”)。

我的数据集中不应该有来自其他字母的字母,只有烦人的口音。

如果您有解决方案或需要我的代码中的更多信息,请告诉我。

谢谢!

【问题讨论】:

标签: python pandas dataframe unicode utf


【解决方案1】:

有一个 Python 包 Unidecode 可供您使用。

pip install --user unidecode

然后,在 Python 中:

>>> from unidecode import unidecode
>>> print(unidecode('Ölfäßchen'))
'Olfasschen'

【讨论】:

  • unidecode 不会为您修复乱码。检查:unidecode.unidecode('Tölzer') 返回 'TAfAPlzer',而不是原始名称“Tölzer”的 'Tolzer'
  • 没错,正如 lenz 所说,我仍然没有得到预期的结果。
  • 是的,你得到的是一个以错误方式解码的字符串。当然,这不包括在内。但甚至还有一个 python 包:ftfy。但首先你应该尝试正确解码 Unicode。
猜你喜欢
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
  • 2018-06-29
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
相关资源
最近更新 更多