Cómo iterar a través de filas de un DataFrame en Pandas

  1. Atributo index para iterar a través de filas en Pandas DataFrame
  2. Método loc[] para iterar a través de filas de DataFrame en Python
  3. Método iloc[] para iterar a través de filas de DataFrame en Python
  4. pandas.DataFrame.iterrows() para iterar sobre las filas pandas
  5. pandas.DataFrame.itertuples para iterar sobre las filas pandas
  6. pandas.DataFrame.apply para iterar sobre las filas pandas

Podemos recorrer las filas de un Pandas DataFrame usando el atributo index del DataFrame. También podemos iterar a través de filas de DataFrame Pandas usando los métodos loc(), iloc(), iterrows(), itertuples(), iteritems() y apply() de los objetos DataFrame.

Utilizaremos el siguiente DataFrame como ejemplo en las siguientes secciones.

import pandas as pd

dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]

df=pd.DataFrame({"Date":dates,
                "Income_1":income1,
                "Income_2":income2})

print(df)

Producción:

       Date  Income_1  Income_2
0  April-10        10        20
1  April-11        20        30
2  April-12        10        10
3  April-13        15         5
4  April-14        10        40
5  April-16        12        13

Atributo index para iterar a través de filas en Pandas DataFrame

El atributo Pandas DataFrame index proporciona un objeto de rango desde la fila superior a la fila inferior de un DataFrame. Podemos usar el rango para iterar sobre filas en Pandas.

import pandas as pd

dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]

df=pd.DataFrame({"Date":dates,
                "Income_1":income1,
                "Income_2":income2})

for i in df.index: 
     print("Total income in "+ df["Date"][i]+ " is:"+str(df["Income_1"][i]+df["Income_2"][i]))

Producción:

Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25

Agrega Income_1 e Income_2 de cada fila e imprime el ingreso total.

Método loc[] para iterar a través de filas de DataFrame en Python

El método loc[] se usa para acceder a una fila a la vez. Cuando usamos el método loc[] dentro del bucle a través de DataFrame, podemos iterar a través de filas de DataFrame.

import pandas as pd

dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]

df=pd.DataFrame({"Date":dates,
                "Income_1":income1,
                "Income_2":income2})

for i in range(len(df)): 
     print("Total income in "+ df.loc[i,"Date"]+ " is:"+str(df.loc[i,"Income_1"]+df.loc[i,"Income_2"]))

Producción:

Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25

Aquí, range(len(df)) genera un objeto de rango para recorrer filas enteras en el DataFrame.

Método iloc[] para iterar a través de filas de DataFrame en Python

El atributo Pandas DataFrame iloc también es muy similar al atributo loc. La única diferencia entre loc e iloc es que en loc tenemos que especificar el nombre de la fila o columna a la que se debe acceder, mientras que en iloc especificamos el índice de la fila o columna a la que se debe acceder.

import pandas as pd

dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]

df=pd.DataFrame({"Date":dates,
                "Income_1":income1,
                "Income_2":income2})

for i in range(len(df)): 
     print("Total income in "+ df.iloc[i,0]+ " is:"+str(df.iloc[i,1]+df.iloc[i,2]))

Producción:

Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25

Aquí el índice 0 representa la primera columna de DataFrame, es decir, Date, el índice 1 representa la columna Income_1 y el índice 2 representa la columna Income_2.

pandas.DataFrame.iterrows() para iterar sobre las filas pandas

pandas.DataFrame.iterrows() devuelve el índice de la fila y todos los datos de la fila como una Series. Por lo tanto, podríamos usar esta función para iterar sobre filas en Pandas DataFrame.

import pandas as pd

dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]

df=pd.DataFrame({"Date":dates,
                "Income_1":income1,
                "Income_2":income2})


        
for index, row in df.iterrows(): 
    print("Total income in "+ row["Date"]+ " is:"+str(row["Income_1"]+row["Income_2"]))

Producción:

Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25

pandas.DataFrame.itertuples para iterar sobre las filas pandas

pandas.DataFrame.itertuples devuelve un objeto para iterar sobre tuplas para cada fila con el primer campo como índice y los campos restantes como valores de columna. Por lo tanto, también podríamos usar esta función para iterar sobre filas en Pandas DataFrame.

import pandas as pd

dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]

df=pd.DataFrame({"Date":dates,
                "Income_1":income1,
                "Income_2":income2})


        
for row in df.itertuples():
    print("Total income in "+ row.Date+ " is:"+str(row.Income_1+row.Income_2))

Producción:

Total income in April-10 is:30
Total income in April-11 is:50
Total income in April-12 is:20
Total income in April-13 is:20
Total income in April-14 is:50
Total income in April-16 is:25

pandas.DataFrame.apply para iterar sobre las filas pandas

pandas.DataFrame.apply devuelve un DataFrame como resultado de aplicar la función dada a lo largo del eje dado del DataFrame.

Sintaxis:

DataFrame.apply(self, 
                func, 
                axis=0, 
                raw=False, 
                result_type=None, 
                args=(), 
                **kwds)

Donde, func representa la función que se aplicará y axis representa el eje a lo largo del cual se aplica la función. Podemos usar axis = 1 o axis = 'columns' para aplicar la función a cada fila.

import pandas as pd

dates=['April-10', 'April-11', 'April-12', 'April-13','April-14','April-16']
income1=[10,20,10,15,10,12]
income2=[20,30,10,5,40,13]

df=pd.DataFrame({"Date":dates,
                "Income_1":income1,
                "Income_2":income2})


        
print(df.apply(lambda row: "Total income in "+ row["Date"]+ " is:"+str(row["Income_1"]+row["Income_2"]),axis=1))

Producción:

0    Total income in April-10 is:30
1    Total income in April-11 is:50
2    Total income in April-12 is:20
3    Total income in April-13 is:20
4    Total income in April-14 is:50
5    Total income in April-16 is:25
dtype: object

Aquí, la palabra clave lambda se usa para definir una función en línea que se aplica a cada fila.

Artículo relacionado - Pandas DataFrame

  • Convertir Array de NumPy a DataFrame de Pandas
  • Cómo cambiar el nombre de las columnas en Pandas DataFrame
  • Artículo relacionado - Pandas DataFrame Row

  • Convertir Array de NumPy a DataFrame de Pandas
  • Cómo convertir un float en un entero en Pandas DataFrame