Условие If в совпадающих строках (РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ) в panda с Python

#python #python-3.x #regex #pandas #dataframe

#python #python-3.x #регулярное выражение #pandas #фрейм данных

Вопрос:

Я просто хочу добавить условие if перед сопоставлением регулярных выражений: сначала я определяю регулярное выражение и сохраняю значения в Name, затем я печатаю значение Name. Результат имеет значения True и False (логическое значение).

 Name = df['Name'].str.match('^(w s*)$')
#If the result matches True value passed and else the value will be False
print(Name) 
  

Результат

 :
True
False
True
  

Приведенный ниже код касается условия if, которое у меня есть. Я не знаю, как сопоставить условие if с регулярным выражением.
Похоже, значение Name, которое равно True / False, не было проверено в условии if.

 if Name is True:
     print(Name)
else:
     print('bye')
  

Результат кода:

 bye
  

Ожидаемый результат:

 John
Saher
  

Спасибо

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

1. Вы не задавали никаких вопросов, но, судя по истории, вам нужно df.loc[Name,'Name'] .

2. Уважаемый DYZ, я обновляю свой контент. Вы правы, и я ценю потраченное вами время. Я новичок в python и panda. мой вопрос относится к условию if. Теперь, где я должен добавить df.loc?

3. Просто распечатайте его, и ваш текст по-прежнему не является вопросом.

4. Моя проблема заключается в том, что условие if не выводит значение.

Ответ №1:

Вы можете использовать

 df.loc[df['Name'].str.match(r'^w s*$')]
  

Обратите внимание, что вам не нужна группа захвата с регулярным выражением, переданным в качестве аргумента Series.str.match , это требуется только в extract / extractall .

Если вы хотите разрешить любое количество символов с начальными пробелами, вы также можете добавить s* after ^ и использовать r'^s*w s*$' .

Тест Pandas:

 import pandas as pd
df = pd.DataFrame({'Name': ['John', '---', 'Saher']})
>>> df.loc[df['Name'].str.match('^(w s*)$')]
    Name
0   John
2  Saher