Pandas: Filter rows depending on number of occurrences of target string

Question:

Given this sample data:

temp
a. b
a b
a. b. c
ab.c

I only want to keep rows in column temp that has only one period, so the above data would become:

temp
a. b
ab.c

Is there a way to do this with a lambda function, preferably?

Asked By: KLG

||

Answers:

df[df.temp.str.count(".") == 1]

Note that Series.str.count expects a regex. So the . needs to be escaped, otherwise you will get the length of the strings.

Answered By: suvayu

You can try this:

df.loc[df['temp'].str.count(r'.').eq(1)]

   temp
0  a. b
3  ab.c
Answered By: Anoushiravan R

We can use apply with the lambda function.

filt = df["temp"].apply(lambda x: x.count('.') == 1)
print(df[filt])
Answered By: Sanskar Tiwari
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.