Examples
Scalar arguments (including strings) result in a scalar boolean.

In [1]:
import numpy as np
import pandas as pd
In [2]:
pd.isna('fox')
Out[2]:
False
In [3]:
pd.isna(np.nan)
Out[3]:
True

ndarrays result in an ndarray of booleans.

In [4]:
array = np.array([[2, np.nan, 4], [5, 6, np.nan]])
array
Out[4]:
array([[ 2., nan,  4.],
       [ 5.,  6., nan]])
In [5]:
pd.isna(array)
Out[5]:
array([[False,  True, False],
       [False, False,  True]])

For indexes, an ndarray of booleans is returned.

In [6]:
index = pd.DatetimeIndex(["2019-05-02", "2019-05-03", None,
                          "2019-05-05"])
index
Out[6]:
DatetimeIndex(['2019-05-02', '2019-05-03', 'NaT', '2019-05-05'], dtype='datetime64[ns]', freq=None)
In [7]:
pd.isna(index)
Out[7]:
array([False, False,  True, False])

For Series and DataFrame, the same type is returned, containing booleans.

In [8]:
df = pd.DataFrame([['lion', 'bee', 'cow'], ['fox', None, 'fly']])
df
Out[8]:
0 1 2
0 lion bee cow
1 fox None fly
In [9]:
pd.isna(df)
Out[9]:
0 1 2
0 False False False
1 False True False
In [10]:
pd.isna(df[1])
Out[10]:
0    False
1     True
Name: 1, dtype: bool