У меня есть pandas фрейм данных около 1M строк и растет. Мне нужно сделать несколько поисков без учета регистра в столбце и назначить другое значение для другого столбца, если он найден. Текущий способ, которым я выполняю это:
df.loc[df.columnA.str.contains('(?i)^match_string', na=False, regex=True), 'columnB'] = 'New Value'
Таким образом, он ищет в columnA
все, что начинается с match_string
, без учета регистра затем, если он найден, он присваивает New Value
columnB
.
Проблема в том, что мне нужно сделать это несколько сотен раз, и это действительно медленно. Я рассмотрел использование .at
вместо .loc
, но у меня сложилось впечатление, что вы можете использовать .at
только для поиска одного значения, и мне нужно найти все без исключения экземпляры match_string
(то есть match_string
может встречаться в нескольких строках columnA
). Я не прав - могу ли я использовать .at здесь?
Какой самый быстрый способ go по этому поводу? В настоящее время на это уходит более часа, и с ростом размера данных ситуация будет только ухудшаться.