-2

I have a dataframe below, I wanted to find all name contain 'And'

df = pd.DataFrame({"name": ["Andrew", "Jen And Jess"," Gin And]})

my code
df[df["name"].str.contains('AND',na=False)]

My code's output included with substring and consist 'And'

What i expecting:

name
Jen And Jess
Gin And
petezurich
  • 9,280
  • 9
  • 43
  • 57
Jyc
  • 11
  • 3

2 Answers2

0

use regex in the contain and surround the 'And' with the \b (word boundaries) you can use IGNORECASE flag, to keep the pattern simple

import re

df[df.name.str.contains(r'\band\b', flags=re.IGNORECASE , regex=True)]
name
1   Jen And Jess
2   Gin And
Naveed
  • 11,495
  • 2
  • 14
  • 21
0

To catch upper and lower, you can do:

import re
df[df["name"].str.contains(r'\b[Aa][Nn][Dd]\b')]