Python | Pandas Series.str.findall()

Python is a great language for doing data analysis, primarily because of the fantastic ecosystem of data-centric Python packages. Pandas is one of those packages and makes importing and analyzing data much easier.

Pandas str.findall() method is also used to find substrings or separators in each string in a series. But it is different from str.find() method. Instead of returning the index, it returns list with substrings and size of list is number of times it occurred.

Syntax: Series.str.findall(pat, flags=0)

Parameters:
pat: Substring to be searched for
flags: Regex flags that can be passed (A, S, L, M, I, X), default is 0 which means None. For this regex module (re) has to be imported too.

Return Type: Series of list(strings).


To download the CSV used in code, click here.

In the following examples, the data frame used contains data of some NBA players. The image of data frame before any operations is attached below.

Example #1: Searching character in string

In this example, the name column is searched for ‘r’ using str.findall() method and output is stored in new column. Before doing any operations, null rows are dropped using .dropna() to avoid errors.

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing pandas module 
import pandas as pd 
    
# making data frame 
    
# removing null values to avoid errors 
data.dropna(inplace = True
  
# string to be searched for
search ='r'
  
# returning values and creating column
data["Findall(name)"]= data["Name"].str.findall(search)
  
# display
data.head(10)

chevron_right


Output:
As shown in the output image, it can be compared that the number of ‘e’ returned is equal to number of time it occurred in string.

 
Example #2: Searching character and passing IGNORECASE flag

In this example, the Name column is searched for ‘a’ and the IGNORECASE flag is passed. For that re module has to be imported too. The returned series from str.findall() method is stored in a New column.

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing pandas module 
import pandas as pd 
  
# importing regex module
import re
    
# making data frame 
    
# removing null values to avoid errors 
data.dropna(inplace = True
  
# string to be searched for
search ='a'
  
# returning values and creating column
data["Findall(name)"]= data["Name"].str.findall(search, flags = re.I)
  
# display
data.head(10)

chevron_right


Output:
As shown in the output image, it can be seen in the first row itself that both ‘A’ and ‘a’ were returned since IGNORECASE flag(re.I) was passed.



My Personal Notes arrow_drop_up

Developer in day, Designer at night GSoC 2019 with Python Software Foundation (EOS Design system)

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.