Поиск строки, которая не содержит определенные символы - PullRequest
0 голосов
/ 14 января 2020

В столбце «а» у меня есть значения, представляющие собой числа, разделенные запятой (в диапазоне от 1 до 35). например, '1,6,7,3,5,15,6,25,30' и '5,6,7,33' '1,6,29,15'

В новом столбце ' b ', я хочу, чтобы значение говорило' да 'всякий раз, когда значение в столбце A равно 5 или его вариациям, 5 (запятая 5) или 5, (5 запятая). Однако я не хочу, чтобы значения, такие как 15 или 25 включены. Есть ли способ включить все комбинации из 5 с запятой, но не что-нибудь еще?

df.loc[df['a'].str.contains(',5'), 'b'] = 'yes'
df.loc[df['a'].str.contains('5,'), 'b'] = 'yes'

Ответы [ 2 ]

1 голос
/ 14 января 2020

Я бы предложил что-то вроде:

# your dataframe
df = pandas.DataFrame({'A': ['1,2,34,5,6', '32,2,4,67,5', '4,3,2,1,']}) 
df['B'] = df['A'].apply(lambda x : True if '5' in x.split(',') else False)

это добавит столбец B к вашему фрейму данных, содержащий True, если есть 5 и False в противном случае.

           A    B
0   1,2,34,5,6  True
1   32,2,4,67,5 True
2   4,3,2,1,    False
0 голосов
/ 14 января 2020

Я бы предложил преобразовать вашу строку, разделенную запятыми, в массив (см. Здесь: Как преобразовать строку в список в Python? ).

Тогда вы можно проверить, существует ли значение поиска (например, '5') в массиве, используя в , например:

, если searchValue в arrayOfNumbers {return True}

(или вы можно попробовать троичный оператор, однако это сделано в Python)

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