Как проверить, присутствует ли строка символов в столбце, который не является буквенно-цифровым? - PullRequest
0 голосов
/ 19 января 2019

У меня есть df, который выглядит так:

id    col1 
1     [[[[[[['metal', 'soundtracks'], 'jazz'], 'indie'], 'hiphop'], 'rock'], 'pop'], 'electronic']

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

Я пытался:

df['col1'].str.contains('[').any()

, но я получаю ошибку:

error: unterminated character set

Также пробовал следующие комбинации:

df['col1'].str.contains("[").any()
df['col1'].str.contains("'['").any()
df['col1'].str.contains('"["').any()

Все получаются одинаковоошибка.

Я подтвердил, что d-тип столбца, о котором идет речь, object

Моя цель - найти символ [ и применить мою логику для очистки данных.

if df['col1'].str.contains('[').any():
                 my logic

Также попытался принудительно привести строку в столбец, но получил тот же ответ:

df.col1 = df.col1.astype(str)

edit:

Попробовал это:

if df ['col1']. str.contains ('[', regex = False) .any () == True:

    my logic
else:
    print('all good')

Я получаю false в операторе if, даже если символНастоящий

1 Ответ

0 голосов
/ 19 января 2019

Проблема [ - это специальный символ регулярного выражения, поэтому необходим параметр regex=False:

df['col1'].str.contains('[', regex=False).any()

Или escape-значение на \:

df['col1'].str.contains('\[').any()
...