Skip to main content

Pandas str.find()

In this tutorial, we will learn about the str.find() method in Pandas Series with the help of examples.

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 for
  • start (optional) - the starting index within the string where the search should begin
  • end (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.