如何替换 python 中列名中的瑞典语字符 ä、å、ö?
How to replace Swedish characters ä, å, ö in columns names in python?
我有一个数据框,其中一些列名称具有瑞典语字符 (ö,ä,å)。我想用简单的 o,a,a 代替这些字符。
我尝试将列名转换为 str 并替换字符,它可以工作,但如果我想将 str 分配回列名,它会变得复杂,即,需要多个操作,这使得它变得复杂。
我尝试了以下代码,将列名称中的瑞典字符替换为英文字母,returns 结果为 str。
from unidecode import unidecode
unicodedata.normalize('NFKD',str(df.columns).decode('utf-8')).encode('ascii', 'ignore')
有没有办法使用返回的 str 作为数据框的列名?如果不是,那么有没有更好的方法来替换列名称中的瑞典字符?
当您有很多列时,这可能需要大量手动工作,但一种方法是使用 str.replace
,如下所示:
bänk röund
0 1 3
1 2 4
2 3 5
df.columns = df.columns.str.replace('ä', 'a')
df.columns = df.columns.str.replace('ö', 'o')
bank round
0 1 3
1 2 4
2 3 5
对我来说,首先标准化,然后编码为 ascii,最后解码为 utf-8
:
df = pd.DataFrame(columns=['aä','åa','oö'])
df.columns = (df.columns.str.normalize('NFKD')
.str.encode('ascii', errors='ignore')
.to_series()
.str.decode('utf-8'))
print (df)
Empty DataFrame
Columns: [aa, aa, oo]
Index: []
另一种具有 map
或列表理解的解决方案:
import unicodedata
f = lambda x: unicodedata.normalize('NFKD', x).encode('ascii', 'ignore').decode('utf-8')
df.columns = df.columns.map(f)
print (df)
Empty DataFrame
Columns: [aa, aa, oo]
Index: []
import unicodedata
df.columns = [unicodedata.normalize('NFKD', x).encode('ascii', 'ignore').decode('utf-8')
for x in df.columns]
print (df)
Empty DataFrame
Columns: [aa, aa, oo]
Index: []
我有一个数据框,其中一些列名称具有瑞典语字符 (ö,ä,å)。我想用简单的 o,a,a 代替这些字符。
我尝试将列名转换为 str 并替换字符,它可以工作,但如果我想将 str 分配回列名,它会变得复杂,即,需要多个操作,这使得它变得复杂。
我尝试了以下代码,将列名称中的瑞典字符替换为英文字母,returns 结果为 str。
from unidecode import unidecode
unicodedata.normalize('NFKD',str(df.columns).decode('utf-8')).encode('ascii', 'ignore')
有没有办法使用返回的 str 作为数据框的列名?如果不是,那么有没有更好的方法来替换列名称中的瑞典字符?
当您有很多列时,这可能需要大量手动工作,但一种方法是使用 str.replace
,如下所示:
bänk röund
0 1 3
1 2 4
2 3 5
df.columns = df.columns.str.replace('ä', 'a')
df.columns = df.columns.str.replace('ö', 'o')
bank round
0 1 3
1 2 4
2 3 5
对我来说,首先标准化,然后编码为 ascii,最后解码为 utf-8
:
df = pd.DataFrame(columns=['aä','åa','oö'])
df.columns = (df.columns.str.normalize('NFKD')
.str.encode('ascii', errors='ignore')
.to_series()
.str.decode('utf-8'))
print (df)
Empty DataFrame
Columns: [aa, aa, oo]
Index: []
另一种具有 map
或列表理解的解决方案:
import unicodedata
f = lambda x: unicodedata.normalize('NFKD', x).encode('ascii', 'ignore').decode('utf-8')
df.columns = df.columns.map(f)
print (df)
Empty DataFrame
Columns: [aa, aa, oo]
Index: []
import unicodedata
df.columns = [unicodedata.normalize('NFKD', x).encode('ascii', 'ignore').decode('utf-8')
for x in df.columns]
print (df)
Empty DataFrame
Columns: [aa, aa, oo]
Index: []