English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
El comportamiento de la iteración básica en objetos Pandas depende del tipo. Al iterar sobre Series, es equivalente a un array. Otros datos estructurados (como DataFrame y Panel) siguen una sintaxis similar a dict, iterando sobre las claves del objeto.
En resumen, la iteración básica (for i en objeto) produce −
Series − Valor DataFrame − Etiqueta de columna Panel − Etiqueta de elemento
El iterado de DataFrame devuelve los nombres de las columnas. Vamos a ver un ejemplo.
import pandas as pd import numpy as np N=20 df = pd.DataFrame({ 'A': pd.date_range(start='2016-01-01, periods=N, freq='D'), 'x': np.linspace(0, stop=N-1, num=N), 'y': np.random.rand(N), 'C': np.random.choice(['Bajo', 'Medio', 'Alto'], N).tolist(), 'D': np.random.normal(100, 10, size=(N)).tolist() ) for col in df: print col
Su salida es la siguiente
A C D x y
Para recorrer las filas de DataFrame, podemos usar las siguientes funciones-
iteritems(): − Iterar sobre pares (clave, valor) iterrows() − Recorrer las filas en forma de pares (índice, serie) itertuples() − Recorrer las filas en forma de namedtuples
Recorrer cada columna como clave, usar pares de valores con etiquetas como clave y los valores de la columna como objetos Series.
import pandas as pd import numpy as np df = pd. DataFrame(np. random.randn(4,3),columns=[ 'col1', 'col2', 'col3']) for clave, valor en df. iteritems(): print clave, valor
Resultados de ejecución:
col1 0 0.802390 1 0.324060 2 0.256811 3 0.839186 Nombre: 01, dtype: float64 col2 0 1.624313 1 -1.033582 2 1.796663 3 1.856277 Nombre: 02, dtype: float64 col3 0 -0.022142 1 -0.230820 2 1.160691 3 -0.830279 Nombre: 03, dtype: float64
Se puede ver que cada columna se itera como par clave-valor en la serie.
iterrows() devuelve un iterador que genera cada valor de índice y una secuencia que contiene cada fila de datos.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3']) for row_index, row in df.iterrows(): print row_index, row
Resultados de ejecución:
0 col1 1.529759 col2 0.762811 col3 -0.634691 Nombre: 0, tipo: flotante64 1 col1 -0.944087 col2 1.420919 col3 -0.507895 Name: 1, dtype: float64 2 col1 -0.077287 col2 -0.858556 col3 -0.663385 Name: 2, dtype: float64 3 col1 -1.638578 col2 0.059866 col3 0.493482 Name: 3, dtype: float64
Dado que iterrows() recorre filas, no se conservará el tipo de datos en la fila. 0,1,2es el índice de fila, col1,col2,col3es el índice de columna.
El método itertuples() devuelve un iterador que genera un tupla nombrada para cada fila del DataFrame. El primer elemento de la tupla será el valor de índice correspondiente de la fila, y el resto de los valores son los valores de la fila.
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3']) for row in df.itertuples(): print row
Resultados de ejecución:
Pandas(Index=0, col1=1.5297586201375899, col2=0.76281127433814944, col3=- 0.6346908238310438) Pandas(Index=1, col1=-0.94408735763808649, col2=1.4209186418359423, col3=- 0.50789517967096232) Pandas(Index=2, col1=-0.07728664756791935, col2=-0.85855574139699076, col3=- 0.6633852507207626) Pandas(Index=3, col1=0.65734942534106289, col2=-0.95057710432604969, col3=0.80344487462316527)
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3']) for index, row in df.iterrows(): row['a'] = 10 print df
Resultados de ejecución:
col1 col2 col3 0 -1.739815 0.735595 -0.295589 1 0.635485 0.106803 1.527922 2 -0.939064 0.547095 0.038585 3 -1.016509 -0.116580 -0.523158
Observación, no se refleja ningún cambio.