Como Iterar Através de Linhas de um DataFrame em Pandas
-
Atributo
index
para 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.itertuples
para Iterar sobre Linhas Pandas -
pandas.DataFrame.apply
para 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.