This can be easliy done by using to_pickle:
df.to_pickle(file_name)  # where to save it, usually as a .pkl
And to load it back:
df = pd.read_pickle(file_name)
Another way to do this is by using HDF5 which offers fairly fast access to huge datasets:
store = HDFStore('store.h5')
store['df'] = df  # save it
store['df']  # load it