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