Проблемы с заменой текста в Pandas DataFrame, где появляются апострофы - PullRequest
0 голосов
/ 06 мая 2020

Я использую Pandas DataFrame, который я прочитал из Excel I и хочу найти и заменить сокращения в тексте (например, не делать -> не делать). Код, который я использую, работает при замене текста, который не содержит апострофов, но не работает со словами, которые их включают.

Я определил словарь, чтобы указать, какие замены нужно сделать. Я предоставил образец из него ниже вместе с кодом для выполнения замены.

contractions_dict = { 
'ain\'t': 'is not', 'aren\'t': 'are not', 'can\'t': 'can not', '\'cause': "because",
'coz': "because", 'cos': "because", 'could\'ve': "could have", 'couldn\'t': "could not",
'didn\'t': "did not", 'doesn\'t': "does not", 'don\'t': 'do not',
'no contractions': 'TEST'
}

regex_dict = {r"(\b){}(\b)".format(k):r"\1{}\2".format(v) for k,v in contractions_dict.items()}
regex_dict


data = {'Text_with_contractions': ['Text with no contractions', "Text with contractions doesn't work", 'More text']}
df = pd.DataFrame(data)

df['Text_with_no_contractions'] = df['Text_with_contractions'].replace(regex_dict, regex=True)
df['Text_with_contractions'].iloc[1]

Странно, что приведенный выше код работает, когда я тестирую его на фреймворке данных, который я создал вручную , но это не работает с фреймом данных, который я прочитал из Excel . Есть идеи, почему?

Это созданный вручную фрейм данных, на котором он работает:

data = {'Text_with_contractions': ['Text with no contractions', "Text with contractions doesn't work", 'More text']}
df = pd.DataFrame(data)

Это код, который я использовал для чтения в фреймворке данных, с которым он не работает:

df = pd.read_excel(path + "output.xlsx", encoding = "UTF-8")

Я пробовал использовать escape-символы перед апострофом (как указано выше). Я пробовал использовать двойные кавычки и одинарные кавычки для апострофа

Я был бы очень благодарен, если бы кто-нибудь мог помочь определить, почему он не работает с данными чтения Excel, и предложить решение.

1 Ответ

0 голосов
/ 13 мая 2020

хорошо, я нашел, что не так. Словарь включал символ 'как апостроф, но фрейм данных включал символ'

Теперь все работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...