Используя функцию numpy roll, код будет выглядеть примерно так:
import numpy as np
import pandas as pd
#sample data
m=[['a','b',' '],[' ','c','d'],[' ','e','f']]
dataframe = pd.DataFrame(m)
#to numpy, roll, and back
v1 = dataframe.values
v2 = np.roll(m,-1,1)
dataframe2 = pd.DataFrame(v2)
#conditional assignment
dataframe.loc[dataframe[0] == ' '] = dataframe2