Как я могу запросить строку с апострофом из фрейма данных pandas?

#python #pandas

#python #pandas

Вопрос:

Итак, у меня есть фрейм данных pandas, и я хотел бы выбрать из него определенные строки на основе определенных значений в столбцах. Следующий код работает для меня:

 df.query('Col1 == "zz" and Col2 == "yy"')
  

и возвращает все строки, в которых есть «zz» в Col1 и «yy» в Col2. Однако я сталкиваюсь с проблемой, если строка содержит апостроф. например

 df.query('Col1 == "zz" and Col2 == "yy's"')
  

python выдает синтаксическую ошибку. Я рассматривал возможность просто удалить апостроф из строки, но это имя местоположения, и было бы правильнее сохранить его. Как я могу это исправить / что я могу использовать вместо этого?

Ответ №1:

Ваша проблема в том, что python интерпретирует апостроф как специальный символ. Следовательно, решение состоит в том, чтобы заключить строку запроса в тройные кавычки, например, следующим образом:

 df.query('''Col1 == "zz" and Col2 == "yy's"''')
  

Ответ №2:

Вы можете сделать это так:

 df.query('Col1 == "zz" and Col2 == "yy's"')
  

Ответ №3:

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

 df.query('''Col1 == "zz" and Col2 == "yy's"''')
  

Комментарии:

1. Почему вы называете их «многострочными кавычками»? Я знаю их как «тройные кавычки». И я знаю, что они позволяют создавать многострочные строки, но вы не используете это здесь.