The str.find()
method in Pandas is used to search for a substring in each element of a Series, returning the lowest index at which the substring is found.
Example
import pandas as pd
# create a Series
data = pd.Series(['hello world', 'pandas is fun', 'find the index'])
# use str.find() to find the index of 'is' in each string
index_positions = data.str.find('is')
print(index_positions)
'''
Output
0 -1
1 7
2 -1
dtype: int64
'''
str.find() Syntax
The syntax of the str.find()
method in Pandas is:
Series.str.find(sub, start=0, end=None)
str.find() Arguments
The str.find()
method takes following arguments:
sub
- the substring to search forstart
(optional) - the starting index within the string where the search should beginend
(optional) - the ending index within the string up to which the search is conducted
str.find() Return Value
The str.find()
method returns a Series with integer values, representing the index of the first occurrence of the substring. If the substring is not found, -1 is returned.
Example1: Find Substring Positions Using str.find()
import pandas as pd
# create a Series
data = pd.Series(['sunny day', 'weekly meeting', 'holiday plans', 'birthday party'])
# use str.find() method to find the index of 'day' in each string
index_positions = data.str.find('day')
print(index_positions)
Output
0 6 1 -1 2 4 3 5 dtype: int64
In the above example, we have used the str.find('day')
method to find the index of day
in each string.
It returns the lowest index where day
is found, or -1 if not found.
Example 2: Case-Sensitive Search
import pandas as pd
# create a Series with mixed case strings
data = pd.Series(['Good Morning', 'EVENING star', 'afterNoon Walk'])
# search for a lowercase 'n' in each string
index_positions = data.str.find('n')
print(index_positions)
Output
0 8 1 -1 2 8 dtype: int64
Here, str.find('n')
searches for the lowercase letter n
in the data
Series where the strings have mixed cases.
The str.find()
method is case-sensitive, so it will only find lowercase n
.
Example 3: Search From a Specific Start Position
import pandas as pd
# create a Series
data = pd.Series(['repeat and repeat', 'Find and find again', 'cycle and recycle'])
# search for 'and' starting from index 6
index_positions = data.str.find('and', start=6)
print(index_positions)
Output
0 7 1 -1 2 6 dtype: int64
In this example, the search for the substring and
starts from index 6 in each string. This means it will skip any occurrences of and
before that index.
Example 4: Search With an End Position
import pandas as pd
# create a Series
data = pd.Series(['beginning to end', 'start to finish', 'from start to end'])
# use str.find() to search for 'to' up to a specific end position
index_positions = data.str.find('to', end=10)
print(index_positions)
Output
0 -1 1 6 2 -1 dtype: int64
Here, we used str.find()
to search for the substring to
in each string of the data Series.
The end=10
argument limits the search to the first b characters of each string. If to
appears after the 10th character, it will not be found, and -1 will be returned.