Я использую синтаксис ниже, чтобы заменить только определенные значения в столбце 'content_text' на основе столбца macro_id в моей таблице, но результаты очень непоследовательны. По сути, макросы — это числа, которые представляют текст, и все они единообразны по количеству символов и разделителям, однако я не могу понять, почему некоторые идентификаторы макросов никогда не заменяются. Бывают случаи, когда в поле контекста есть несколько macro_id, но иногда они не заменяются, когда есть только один. Всего около 4200 строк, и я очень надеюсь, что мой ноутбук не просто выбивает данные.
Пример:
Что у меня есть
Что должно вернуться
Я использую Visual Studio 2019, и иногда при запуске codeа я получаю не менее 8 строк, которые не были преобразованы, и их число достигает 186.
Я выборочно проверил несколько macro_id и подтвердил, что они действительны и привязаны к тексту. Значения на исходном листе загружались напрямую из Power Query, и я играл с изменением типа поля с числа на текст, и именно там я вижу колебания в строках, которые не были преобразованы. Я вставлял значения как текст на отдельные листы для форматирования xlsx и csv, но я никогда не получаю 100% замены. Что я могу делать неправильно?
import pandas as pd
import re
# Read the large spreadsheet with 11 thousand rows
df = pd.read_excel('testmacros.xlsx')
# Handle NaN values in 'content_text' column
df['content_text'] = df['content_text'].fillna('')
# Update values in the 'content_text' column using the map function
s = df.astype({'macro_id': str}).set_index('macro_id')['content_text']
pattern = r'\b(%s)\b' % '|'.join(map(re.escape, s.index))
df['content_text'] = (df['content_text']
.str.replace(pattern,
lambda m: s.get(m.group(0)),
regex=True)
)
# Save the updated large spreadsheet
df.to_excel('updatedmacros.xlsx', index=False)