Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Como acessar elementos de uma row?

Fiquei com dúvida em como posso acessar elementos específicos de uma row quando utilizamos o iterrows()

Por exemplo, gostaria de criar um código que compare elementos de uma mesma coluna, sendo mais ou menos assim:

for index, row in dataset.iterrows()
    if(primeiro elemento row['valor']  - segundo elemento da row ['valor'] > 0):
        print('Valor decrescente')
    else:
        print('Valor crescente')

É possível acessar elementos dessa maneira?

2 respostas
solução!

Oi, Juliano, tudo bem?

Ao utilizar o iterrows() em um DataFrame do pandas, ele retorna um iterador que produz índice e linha. A linha é uma série que tem como índice o nome das colunas do DataFrame.

No seu caso, você quer comparar elementos consecutivos da mesma coluna. Para isso, você precisa de uma maneira de lembrar do elemento anterior enquanto itera. Uma maneira de fazer isso seria:

valor_anterior = None
for index, row in dataset.iterrows():
    if valor_anterior is None:
        valor_anterior = row['valor']
        continue
    if(valor_anterior - row['valor'] > 0):
        print('Valor decrescente')
    else:
        print('Valor crescente')
    valor_anterior = row['valor']

Nesse código, antes de entrar no loop, criamos uma variável valor_anterior e a inicializamos com None. Dentro do loop, se valor_anterior for None (o que só vai acontecer na primeira iteração), nós a atualizamos com o valor atual e passamos para a próxima iteração. Nas iterações seguintes, nós comparamos o valor anterior com o valor atual, atualizamos valor_anterior e continuamos.

Todavia, vale ressaltar que outros testes terão de ser feitos a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Espero ter ajudado e bons estudos!

Perfeito! Funcionou corretamente :) Muito obrigado!