Home > OS >  Pandas: Filter rows depending on number of occurrences of target string
Pandas: Filter rows depending on number of occurrences of target string

Time:01-14

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?

CodePudding user response:

You can try this:

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

   temp
0  a. b
3  ab.c

CodePudding user response:

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.

CodePudding user response:

We can use apply with the lambda function.

filt = df["temp"].apply(lambda x: x.count('.') == 1)
print(df[filt])
  • Related