title: Shuffling a pandas dataframe
body: <p>I have the following dataframe:</p>
  <p><code>df = pd.DataFrame({'A':range(10), 'B':range(10), 'C':range(10), 'D':range(10)})</code></p>
  <p>I would like to shuffle the data using the below function:</p>
  <pre><code>import pandas as pd
  
  import numpy as np
  
  def shuffle(df, n=1, axis=0):
      df = df.copy()
      for _ in range(n):
          df.apply(np.random.shuffle, axis=axis)
          return df
  
  </code></pre>
  <p>However I do not want to shuffle columns A and D, only columns B and C. Is there a way to do this by amending the function? I want to say if column == 'A' or 'D' then don't shuffle.</p>
  <p>Thanks</p>