У меня есть данные в файле Excel (только 1 столбец), где есть несколько японских символов, за которыми следуют числа полной ширины. Я хочу преобразовать эти числа в обычные числа.
いつもありがとう890ございます
忙しい7ー10ー1ところ
Таких рядов несколько.
Что я могу сделать, чтобы эти строки выглядели так:
いつもありがとう890ございます
忙しい7ー10ー1ところ
Я пробовал это сделать, но не уверен, так ли это нужно делать нравиться
s = unicodedata.normalize('NFKC', df.to_string())
Предположим, что такой пример, в котором col1
— это столбец для обработки:
df = pd.DataFrame({'col1': ['いつもありがとう890ございます 忙しい7ー10ー1ところ',
'いつもありがとう890ございます 忙しい7ー10ー1ところ'],
'col2': [1, 2]
})
Вы можете использовать применить :
import unicodedata
from functools import partial
df['col1'] = df['col1'].apply(partial(unicodedata.normalize, 'NFKC'))
Вариант:
df['col1'] = df['col1'].apply(lambda s: unicodedata.normalize('NFKC', s))
Выход:
col1 col2
0 いつもありがとう890ございます 忙しい7ー10ー1ところ 1
1 いつもありがとう890ございます 忙しい7ー10ー1ところ 2
Строковые методы Pandas имеют функцию нормализации: pandas.Series.str.normalize, которая принимает форму нормализации в качестве параметра. Его следует использовать вместо str.normalize
.
import pandas as pd
pd.options.display.unicode.east_asian_width: True
pd.options.display.unicode.ambiguous_as_wide: True
df = pd.DataFrame({
'col1': [
'いつもありがとう890ございます',
'忙しい7ー10ー1ところ'],
'col2': ['1A', '2S']
})
df['col1'] = df['col1'].str.normalize('NFKC')
Каким будет результат для этой строки?