code: def create_n_gram_df(df, n_pad):
      
      n_pad_2 = int((n_pad - 1)/2)
      for i in range(n_pad_2):
          df['char-{}'.format(i+1)] = df['char'].shift(i + 1)
          df['type-{}'.format(i+1)] = df['type'].shift(i + 1)
          df['char{}'.format(i+1)] = df['char'].shift(-i - 1)
          df['type{}'.format(i+1)] = df['type'].shift(-i - 1)
      return df[n_pad_2: -n_pad_2]
docs: Given input dataframe, create feature dataframe of shifted characters