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?
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.
You can try this:
df.loc[df['temp'].str.count(r'.').eq(1)]
temp
0 a. b
3 ab.c
We can use apply
with the lambda function.
filt = df["temp"].apply(lambda x: x.count('.') == 1)
print(df[filt])
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?
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.
You can try this:
df.loc[df['temp'].str.count(r'.').eq(1)]
temp
0 a. b
3 ab.c
We can use apply
with the lambda function.
filt = df["temp"].apply(lambda x: x.count('.') == 1)
print(df[filt])