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 do exercício
- Substitua o loop
forpor um código de uma linha que use.apply(str.upper). A chamada deve dar o mesmo resultado: uma colunaCOUNTRYdeve ser adicionada acars, contendo uma versão em maiúsculas dos nomes dos países. - Como de costume, imprima
carspara ver os frutos de seu árduo trabalho.
Exercício interativo prático
Experimente este exercício completando 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()