I have this dataframe-
Name Age
0 Alex 10
1 NaN 12
2 Clarke 13
3 Lexy 14
4 Marie 10
I need to subset the dataframe based on Name
column. I want to only keep rows having name like %lex%
or %clarke%
or %bob%
(case-insensitive). I have tried df.loc and df.query but it's way too long. Is there a better way to do this?
What I've tried so far-
df.loc[df['Name'].str.contains('lex', na=False, case=False) | df['Name'].str.contains('clarke', na=False, case=False)]
df.query('Name.str.contains("lex", na=False, case=False) or Name.str.contains("clarke", na=False, case=False)', engine='python')
Minimum reproducible code-
import pandas as pd
import numpy as np
data = [['Alex', 10], [np.nan, 12], ['Clarke', 13], ['Lexy', 14], ['Marie', 10]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
Expected output-
Name Age
0 Alex 10
2 Clarke 13
3 Lexy 14