index iloc columns column python pandas indexing

python - iloc - Selección de la columna de pandas por ubicación



python dataframe column (5)

Simplemente estoy tratando de acceder a las columnas de los pandas nombrados por un número entero.

Puede seleccionar una fila por ubicación usando df.ix[3] .

¿Pero cómo seleccionar una columna por entero?

Mi marco de datos:

df=pandas.DataFrame({''a'':np.random.rand(5), ''b'':np.random.rand(5)})


Dos enfoques que vienen a la mente:

>>> df A B C D 0 0.424634 1.716633 0.282734 2.086944 1 -1.325816 2.056277 2.583704 -0.776403 2 1.457809 -0.407279 -1.560583 -1.316246 3 -0.757134 -1.321025 1.325853 -2.513373 4 1.366180 -1.265185 -2.184617 0.881514 >>> df.ix[:, 2] 0 0.282734 1 2.583704 2 -1.560583 3 1.325853 4 -2.184617 Name: C >>> df[df.columns[2]] 0 0.282734 1 2.583704 2 -1.560583 3 1.325853 4 -2.184617 Name: C


El método .transpose () convierte columnas en filas y filas en columnas, por lo que incluso podría escribir

df.transpose().ix[3]


Puede acceder a múltiples columnas pasando una lista de índices de columna a dataFrame.ix.

Por ejemplo:

>>> df = pandas.DataFrame({''a'':np.random.rand(5), ''b'':np.random.rand(5), ''c'':np.random.rand(5), ''d'':np.random.rand(5)}) >>> df a b c d 0 0.705718 0.414073 0.007040 0.889579 1 0.198005 0.520747 0.827818 0.366271 2 0.974552 0.667484 0.056246 0.524306 3 0.512126 0.775926 0.837896 0.955200 4 0.793203 0.686405 0.401596 0.544421 >>> df.ix[:,[1,3]] b d 0 0.414073 0.889579 1 0.520747 0.366271 2 0.667484 0.524306 3 0.775926 0.955200 4 0.686405 0.544421


Puede usar etiquetas basadas en .loc o index basadas en el método .iloc para hacer divisiones de columnas, incluidos los rangos de columnas:

In [50]: import pandas as pd In [51]: import numpy as np In [52]: df = pd.DataFrame(np.random.rand(4,4), columns = list(''abcd'')) In [53]: df Out[53]: a b c d 0 0.806811 0.187630 0.978159 0.317261 1 0.738792 0.862661 0.580592 0.010177 2 0.224633 0.342579 0.214512 0.375147 3 0.875262 0.151867 0.071244 0.893735 In [54]: df.loc[:, ["a", "b", "d"]] ### Selective columns based slicing Out[54]: a b d 0 0.806811 0.187630 0.317261 1 0.738792 0.862661 0.010177 2 0.224633 0.342579 0.375147 3 0.875262 0.151867 0.893735 In [55]: df.loc[:, "a":"c"] ### Selective label based column ranges slicing Out[55]: a b c 0 0.806811 0.187630 0.978159 1 0.738792 0.862661 0.580592 2 0.224633 0.342579 0.214512 3 0.875262 0.151867 0.071244 In [56]: df.iloc[:, 0:3] ### Selective index based column ranges slicing Out[56]: a b c 0 0.806811 0.187630 0.978159 1 0.738792 0.862661 0.580592 2 0.224633 0.342579 0.214512 3 0.875262 0.151867 0.071244


También puede usar df.icol(n) para acceder a una columna por entero.

Actualización: icol está en desuso y la misma funcionalidad se puede lograr mediante:

df.iloc[:, n] # to access the column at the nth position