Adicione uma coluna (2)
É fácil entender o uso de iterrows()
para iterar por cada observação de um DataFrame do pandas, mas não é muito eficiente. Em cada iteração, é criada uma nova série do pandas.
Para 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 opção. Em vez disso, convém usar apply()
.
Compare a versão com iterrows()
à versão com apply()
para chegar ao 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)
Podemos fazer algo parecido para chamar o método upper()
com cada nome da coluna country
. Contudo, upper()
é um método, portanto precisamos de uma abordagem um pouco diferente:
Este exercício faz parte do curso
Python intermediário
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 colunaCOUNTRY
deve ser adicionada acars
, 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()