Como Iterar Através de Linhas de um DataFrame em Pandas
-
Atributo
indexpara iterar por meio de linhas no Pandas DataFrame -
loc[]Método para Iterar através de linhas de DataFrame em Python -
iloc[]método para Iterar através de linhas do DataFrame em Python -
pandas.DataFrame.iterrows()para iterar em pandas de linhas -
pandas.DataFrame.itertuplespara Iterar sobre Linhas Pandas -
pandas.DataFrame.applypara iterar sobre linhas de 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 is a backend software engineer at Matrice.ai.
LinkedInArtigo relacionado - Pandas DataFrame
- Como obter os cabeçalhos da coluna Pandas DataFrame como uma lista
- Como eliminar a coluna Pandas DataFrame
- Como Converter a Coluna DataFrame para DataTempo em Pandas
- Como Converter um Flutuador em um Inteiro em Pandas DataFrame
- Como Classificar Pandas DataFrame pelos Valores de uma Coluna
- Como Obter o Agregado de Pandas Group-By e Sum
Artigo relacionado - Pandas DataFrame Row
- Como obter a contagem de filas de um Pandas DataFrame
- Como embaralhar aleatoriamente linhas DataFrame em Pandas
- Como filtrar linhas de dados com base nos valores das colunas em Pandas
- Como obter índice de todas as linhas cuja coluna específica satisfaz dada a condição em Pandas
- Obter a Primeira Fila de Pandas de Dataframe
