Adicione uma coluna (2)

Usar o site iterrows() para iterar sobre cada observação de um DataFrame do Pandas é fácil de entender, mas não é muito eficiente. Em cada iteração, é criada uma nova série do pandas.

Se você quiser adicionar uma coluna a um DataFrame chamando uma função em outra coluna, o método iterrows() em combinação com um loop for não é a melhor maneira de fazer isso. Em vez disso, você deverá usar apply().

Compare a versão iterrows() com a versão apply() para que você obtenha o mesmo resultado no DataFrame brics:

for lab, row in brics.iterrows() :

    brics.loc[lab, "name_length"] = len(row["country"])




brics["name_length"] = brics["country"].apply(len)

Você pode fazer algo semelhante para chamar o método upper() em cada nome da coluna country. No entanto, upper() é um método, portanto, precisaremos de uma abordagem ligeiramente diferente:

Este exercício faz parte do curso

Python intermediário

Ver Curso

Instruções de exercício

  • Substitua o loop for por um código de uma linha que use .apply(str.upper). A chamada deve dar o mesmo resultado: uma coluna COUNTRY deve ser adicionada a cars, contendo uma versão em maiúsculas dos nomes dos países.
  • Como de costume, imprima cars para ver os frutos de seu árduo trabalho.

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

# Import cars data
import pandas as pd
cars = pd.read_csv('cars.csv', index_col = 0)

# Use .apply(str.upper)
for lab, row in cars.iterrows() :
    cars.loc[lab, "COUNTRY"] = row["country"].upper()