Por favor considere esto df:
df = pd.DataFrame({'a':[1,2], 'b':[1,2], 'c':[1,2], 'd':[1,2], 'e':[1,2], 'f':[1,2], 'g':[1,2], 'h':[1,2]}) abcdefgh 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2
¿Cómo puedo seleccionar las columnas 1ª, 4ª y 5ª a 7ª? Lo que intenté:
df.iloc[:, [0, 3, np.arange(5,8)]] ValueError: setting an array element with a sequence.
Puedes hacerlo:
df.iloc[:, [0, 3] + list(range(5,8))]
[0, 3] + list(range(5,8))
concatena 2 listas, combinando tu lista explícita con una lista derivada de tu rango deseado.
Alternativamente, puede usar numpy.r
para construir una matriz de indexación para usted:
import numpy as np df.iloc[:, np.r_[0,3,5:8]] np.r_[0,3,5:8] # array([0, 3, 5, 6, 7])
Esto sería útil, por ejemplo, si tiene múltiples rangos.