1
resposta

Como fatiar um DataFrame usando .loc e .iloc juntos?

Como eu poderia fatiar um DataFrame usando o index das linhas como no .iloc e o nome das colunas como no loc?

Exemplo:

Quero fatiar o seguinte DataFrame usando as seguintes coordenadas:

dados = {
    'Motor': ['Motor 4.0 Turbo', 'Motor Diesel', 'Motor Diesel V8', 'Motor 2.0', '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]
}

dataset[['Passat', 'DS5'] , [0,-1]]

para obter o resultado:

|  Nome | Motor               | Valor |
| Passat | Motor Diesel   | 106000.0 |
| DS5      | Motor 2.0        | 89000.0   |
1 resposta

Oii Icaro, tudo bem contigo?

Para obter este resultado utilizando loc e iloc juntos, você poderia fazer algo assim:

import pandas as pd

dados = {
    'Motor': ['Motor 4.0 Turbo', 'Motor Diesel', 'Motor Diesel V8', 'Motor 2.0', '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]
}

# criando o dataframe
dataset = pd.DataFrame(dados, index = ['Jetta', 'Passat', 'Crossfox', 'DS5', 'Fusca'])
# fazendo a seleção utilizando loc e iloc juntos
dataset.loc[['Passat', 'DS5'], :].iloc[:, [0, -1]]

No entanto, como o loc e o iloc possuem o mesmo intuito de selecionar linhas e colunas e você deseja realizar uma seleção simples, é interessante que você opte por utilizar apenas um deles para ter um código mais prático:

  • Seleção utilizando o loc:

    dataset.loc[['Passat', 'DS5'], ['Motor', 'Valor']] 
  • Seleção utilizando o iloc:

    dataset.iloc[[1, 3], [0, -1]]

Espero que isso ajude. Qualquer dúvida estou à disposição :)

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software