Cortar múltiples rangos de columnas desde un dataframe usando iloc

Tengo un df con 32 columnas

df.shape (568285, 32) 

Estoy tratando de reorganizar las columnas de una manera específica, y soltar la primera columna usando iloc

  df = df.iloc[:,[31,[1:23],24,25,26,28,27,29,30]] ^ SyntaxError: invalid syntax 

¿Esta es la manera correcta de hacerlo?

Podrías usar el indexador np.r_

 class RClass(AxisConcatenator) | Translates slice objects to concatenation along the first axis. | | This is a simple way to build up arrays quickly. There are two use cases. 

 df = df.iloc[:, np.r_[31, 1:23, 24, 25, 26, 28, 27, 29, 30]] 

 df 0 1 2 3 4 5 6 7 8 9 ... 40 \ A 33.0 44.0 68.0 31.0 NaN 87.0 66.0 NaN 72.0 33.0 ... 71.0 B NaN NaN 77.0 98.0 NaN 48.0 91.0 43.0 NaN 89.0 ... 38.0 C 45.0 55.0 NaN 72.0 61.0 87.0 NaN 99.0 96.0 75.0 ... 83.0 D NaN NaN NaN 58.0 NaN 97.0 64.0 49.0 52.0 45.0 ... 63.0 41 42 43 44 45 46 47 48 49 A NaN 87.0 31.0 50.0 48.0 73.0 NaN NaN 81.0 B 79.0 47.0 51.0 99.0 59.0 NaN 72.0 48.0 NaN C 93.0 NaN 95.0 97.0 52.0 99.0 71.0 53.0 69.0 D NaN 41.0 NaN NaN 55.0 90.0 NaN NaN 92.0 out = df.iloc[:, np.r_[31, 1:23, 24, 25, 26, 28, 27, 29, 30]] out 31 1 2 3 4 5 6 7 8 9 ... 20 \ A 99.0 44.0 68.0 31.0 NaN 87.0 66.0 NaN 72.0 33.0 ... 66.0 B 42.0 NaN 77.0 98.0 NaN 48.0 91.0 43.0 NaN 89.0 ... NaN C 77.0 55.0 NaN 72.0 61.0 87.0 NaN 99.0 96.0 75.0 ... 76.0 D 95.0 NaN NaN 58.0 NaN 97.0 64.0 49.0 52.0 45.0 ... 71.0 21 22 24 25 26 28 27 29 30 A NaN 40.0 66.0 87.0 97.0 68.0 NaN 68.0 NaN B 95.0 NaN 47.0 79.0 47.0 NaN 83.0 81.0 57.0 C NaN 75.0 46.0 84.0 NaN 50.0 41.0 38.0 52.0 D NaN 74.0 41.0 55.0 60.0 NaN NaN 84.0 NaN