tutorial tablas seleccionar para leer hacer funciones español documentacion datos curso columnas python pandas dataframe series

tablas - pandas python tutorial español pdf



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

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'')

Estoy tratando de iterar sobre las filas de un marco de datos de Python Pandas. Dentro de cada fila del marco de datos, 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 A B C D 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 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 series 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