#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