Examples
A pattern with two groups will return a DataFrame with two columns. Non-matches will be NaN.

In [1]:
import numpy as np
import pandas as pd
In [2]:
s = pd.Series(['a3', 'b4', 'c5'])
s.str.extract(r'([ab])(\d)')
Out[2]:
0 1
0 a 3
1 b 4
2 NaN NaN

A pattern may contain optional groups.

In [3]:
s.str.extract(r'([ab])?(\d)')
Out[3]:
0 1
0 a 3
1 b 4
2 NaN 5

In [ ]:
Named groups will become column names in the result.
In [4]:
s.str.extract(r'(?P<letter>[ab])(?P<digit>\d)')
Out[4]:
letter digit
0 a 3
1 b 4
2 NaN NaN

A pattern with one group will return a DataFrame with one column if expand=True.

In [5]:
s.str.extract(r'[ab](\d)', expand=True)
Out[5]:
0
0 3
1 4
2 NaN

A pattern with one group will return a Series if expand=False.

In [6]:
s.str.extract(r'[ab](\d)', expand=False)
Out[6]:
0      3
1      4
2    NaN
dtype: object