Delete pandas dataframe row based on multiple condition

Question:

I have the following df :

ABF2
ABG2
ABH2
ABJ3
ABK4
ABM5
ABN6
ABQ7

My goal is to have the following data frame :

ABH2
ABM5
ABQ7

So basically the condition would be multiple :

if third char = H, M, Q or Z

To get the third char value I do as below :

DF.Col_Name[2::2]

Fact is that I don’t really know how to apply multiple condition to retrieve the wanted DF.
Also, what would be the quickest way to do this ?

Asked By: TourEiffel

||

Answers:

Select third character with str and test values in Series.isin for test by membership, filter by boolean indexing:

df = DF[DF.Col_Name.str[2].isin(['H','M','Q','Z'])]
Answered By: jezrael

You can try .str accessor

out = df[df['col'].str[2].isin(['H', 'M', 'Q', 'Z'])]
print(out)

    col
2  ABH2
5  ABM5
7  ABQ7
Answered By: Ynjxsjmh

You can use:

df.loc[df.col.str[2].str.contains('H|M|Q|Z')]

prints:

    col
2  ABH2
5  ABM5
7  ABQ7
Answered By: sophocles
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.