Enquanto estudava Pandas me surgiu uma dúvida; como eu passo uma linha de um DataFrame para uma lista?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Enquanto estudava Pandas me surgiu uma dúvida; como eu passo uma linha de um DataFrame para uma lista?
Olá Igor! Tudo bem com você?
Peço desculpas pela demora em dar um retorno.
Uma maneira seria utilizando o laço for para fazer isso. Vamos fazer um exemplo:
# Criando um dataframe para ser utilizando de exemplo
import pandas as pd
dados = {
'Motor': ['Motor 4.0 Turbo', 'Motor Diesel', 'Motor Diesel V8', 'Motor Diesel', 'Motor 1.6'],
'Ano': [2019, 2003, 1991, 2019, 1990],
'Quilometragem': [0.0, 5712.0, 37123.0, 0.0, 120000.0],
'Zero_km': [True, False, False, True, False],
'Valor': [88000.0, 106000.0, 72000.0, 89000.0, 32000.0]
}
df = pd.DataFrame(dados, index = ['Jetta', 'Passat', 'Crossfox', 'DS5', 'Fusca'])
df.head()Com esse código, temos o seguinte dataframe:
| Motor | Ano | Quilometragem | Zero_km | Valor | |
|---|---|---|---|---|---|
| Jetta | Motor 4.0 Turbo | 2019 | 0 | True | 88000 |
| Passat | Motor Diesel | 2003 | 5712 | False | 106000 |
| Crossfox | Motor Diesel V8 | 1991 | 37123 | False | 72000 |
| DS5 | Motor Diesel | 2019 | 0 | True | 89000 |
| Fusca | Motor 1.6 | 1990 | 120000 | False | 32000 |
Agora, suponhamos que queremos pegar os dados da quarta linha e colocar em uma lista. Uma forma de fazer isso, seria a seguinte:
lista = []
for elemento in df.iloc[3, :]:
lista.append(elemento)
listaOu ainda:
lista = []
for elemento in df.loc['DS5', :]:
lista.append(elemento)
listaDe ambas as formas teremos como resultado:
['Motor Diesel', 2019, 0.0, True, 89000.0]que é o conteúdo da linha 4 de index "DS5".
O iloc e o loc são métodos utilizados para selecionar colunas ou linhas específicas de um dataframe. O iloc seleciona por índice, enquanto o loc seleciona por nome da coluna ou linha. Em ambos, passamos os argumentos da seguinte forma:
# iloc
dataframe.iloc[indice_da_linha, indice_da_coluna]
# loc
dataframe.loc[nome_da_linha, nome_da_coluna]Se quisermos que esses métodos retornem todas as linhas ou todas as colunas, basta utilizarmos os dois pontos (:) conforme utilizei nos exemplos mostrados anteriormente.
Vou deixar aqui o link das documentações desses dois métodos, caso você queira explorar um pouco mais:
Espero que tenha ajudado. Qualquer dúvida estou à disposição :)
Bons estudos!