np.nan is used to represent missing data in pandas.
Reindexing allows you to change/add/delete the index on a specified axis. This returns a copy of the data.

In [1]:
import numpy as np
import pandas as pd
In [2]:
s = pd.Series([1, 4, np.nan, 6, 8])
In [3]:
dates = pd.date_range('20190101', periods=8)
In [4]:
df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=list('PQRS'))
In [5]:
df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])
In [6]:
df1.loc[dates[0]:dates[1], 'E'] = 1
In [7]:
df1
Out[7]:
P Q R S E
2019-01-01 0.726118 0.691275 0.082579 0.029469 1.0
2019-01-02 -0.352010 0.489992 -0.842857 0.636077 1.0
2019-01-03 -0.440696 -1.342800 0.693647 2.457498 NaN
2019-01-04 1.133463 2.400883 1.618823 -1.748350 NaN

To drop any rows that have missing data.

In [8]:
df1.dropna(how='any')
Out[8]:
P Q R S E
2019-01-01 0.726118 0.691275 0.082579 0.029469 1.0
2019-01-02 -0.352010 0.489992 -0.842857 0.636077 1.0

Filling missing data.

In [9]:
df1.fillna(value=5)
Out[9]:
P Q R S E
2019-01-01 0.726118 0.691275 0.082579 0.029469 1.0
2019-01-02 -0.352010 0.489992 -0.842857 0.636077 1.0
2019-01-03 -0.440696 -1.342800 0.693647 2.457498 5.0
2019-01-04 1.133463 2.400883 1.618823 -1.748350 5.0

To get the boolean mask where values are nan.

In [10]:
pd.isna(df1)
Out[10]:
P Q R S E
2019-01-01 False False False False False
2019-01-02 False False False False False
2019-01-03 False False False False True
2019-01-04 False False False False True