Como Iterar Através de Linhas de um DataFrame em Pandas

Suraj Joshi 30 janeiro 2023
  1. Atributo index para iterar por meio de linhas no Pandas DataFrame
  2. loc[] Método para Iterar através de linhas de DataFrame em Python
  3. iloc[] método para Iterar através de linhas do DataFrame em Python
  4. pandas.DataFrame.iterrows() para iterar em pandas de linhas
  5. pandas.DataFrame.itertuples para Iterar sobre Linhas Pandas
  6. pandas.DataFrame.apply para iterar sobre linhas de pandas
Como Iterar Através de Linhas de um DataFrame em Pandas

Podemos fazer loop através das linhas de um Pandas DataFrame utilizando o atributo index do DataFrame. Também podemos iterar através das linhas de um DataFrame Pandas utilizando loc(), iloc(), iterrows(), itertuples(), iteritems() e apply() métodos de objetos DataFrame.

Utilizaremos o quadro de dados abaixo como um exemplo nas seções seguintes.

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)

Resultado:

       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 por meio de linhas no Pandas DataFrame

O atributo Pandas DataFrame index dá um objeto de intervalo desde a linha superior até a linha inferior de um DataFrame. Podemos utilizar o intervalo para iterar sobre as linhas em 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])
    )

Resultado:

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

Ele adiciona Income_1 e Income_2 de cada linha e imprime a renda total.

loc[] Método para Iterar através de linhas de DataFrame em Python

O método loc[] é utilizado para acessar uma fila de cada vez. Quando utilizamos o método loc[] dentro do laço através do DataFrame, podemos iterar através das linhas do 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"])
    )

Resultado:

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

Aqui, range(len(df)) gera um objeto de intervalo para fazer loop sobre linhas inteiras no DataFrame.

iloc[] método para Iterar através de linhas do DataFrame em Python

O atributo Pandas DataFrame iloc também é muito semelhante ao atributo loc. A única diferença entre loc e iloc é que em loc temos que especificar o nome da linha ou coluna a ser acessada enquanto em iloc especificamos o índice da linha ou coluna a ser acessada.

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

Resultado:

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

Aqui o índice 0 representa a primeira coluna do DataFrame, ou seja, Date, o índice 1 representa a coluna Income_1 e o índice 2 representa a coluna Income_2.

pandas.DataFrame.iterrows() para iterar em pandas de linhas

pandas.DataFrame.iterrows() retorna o índice da linha e os dados completos da linha como uma Series. Portanto, poderíamos utilizar esta função para iterar sobre as linhas em 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"])
    )

Resultado:

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 Linhas Pandas

pandas.DataFrame.itertuples retorna um objeto para iterar sobre tuplos para cada linha com o primeiro campo como um índice e os campos restantes como valores de coluna. Portanto, também poderíamos utilizar esta função para iterar sobre linhas em 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))

Resultado:

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 linhas de pandas

pandas.DataFrame.apply retorna um DataFrame
como resultado da aplicação da função dada ao longo do eixo dado do DataFrame.

Sintaxe:

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

Onde, func representa a função a ser aplicada e axis representa o eixo ao longo do qual a função é aplicada. Podemos utilizar axis=1 ou axis = 'columns' para aplicar a função a cada linha.

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

Resultado:

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

Aqui, a palavra-chave lambda é utilizada para definir uma função em linha que é aplicada a cada linha.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artigo relacionado - Pandas DataFrame

Artigo relacionado - Pandas DataFrame Row