Python Pandas iterar sobre filas y acceder a los nombres de columna

Estoy intentando iterar sobre las filas de un dataframe de Python Pandas. Dentro de cada fila del dataframe, estoy tratando de referirme a cada valor a lo largo de una fila por su nombre de columna.

Esto es lo que tengo:

import numpy as np import pandas as pd df = pd.DataFrame(np.random.rand(10,4),columns=list('ABCD')) print df ABCD 0 0.351741 0.186022 0.238705 0.081457 1 0.950817 0.665594 0.671151 0.730102 2 0.727996 0.442725 0.658816 0.003515 3 0.155604 0.567044 0.943466 0.666576 4 0.056922 0.751562 0.135624 0.597252 5 0.577770 0.995546 0.984923 0.123392 6 0.121061 0.490894 0.134702 0.358296 7 0.895856 0.617628 0.722529 0.794110 8 0.611006 0.328815 0.395859 0.507364 9 0.616169 0.527488 0.186614 0.278792 

Utilicé este método para iterar, pero solo me está dando una parte de la solución: después de seleccionar una fila en cada iteración, ¿cómo accedo a los elementos de las filas por su nombre de columna?

Esto es lo que estoy tratando de hacer:

 for row in df.iterrows(): print row.loc[0,'A'] print row.A print row.index() 

Mi entendimiento es que la fila es una serie de Pandas. Pero no tengo forma de indexar en la Serie.

¿Es posible usar nombres de columnas mientras se iteran simultáneamente sobre filas?

También me gusta itertuples()

 for row in df.itertuples(): print(row.A) print(row.Index) 

ya que row es una tupla con nombre, si quisieras acceder a los valores en cada fila, esto debería ser MUCHO más rápido

carrera de velocidad :

 df = pd.DataFrame([x for x in range(1000*1000)], columns=['A']) st=time.time() for index, row in df.iterrows(): row.A print(time.time()-st) 45.05799984931946 st=time.time() for row in df.itertuples(): row.A print(time.time() - st) 0.48400020599365234 

El elemento de iterrows() no es una serie, sino una tupla de (índice, serie), por lo que puede descomprimir la tupla en el bucle for así:

 for (idx, row) in df.iterrows(): print(row.loc['A']) print(row.A) print(row.index) #0.890618586836 #0.890618586836 #Index(['A', 'B', 'C', 'D'], dtype='object')