DataFrames Pandas são a base da manipulação de dados em Python. Frequentemente, você precisará modificar células individuais dentro do seu DataFrame. Este artigo explora três métodos eficientes para alcançar isso usando o índice do DataFrame.
Sumário
- Definindo valores de células com
.at
- Definindo valores de células com
.loc
- O método
.set_value()
depreciado
Definindo valores de células com .at
O acessor .at
oferece uma maneira altamente eficiente de acessar e modificar uma única célula em um DataFrame usando seus rótulos de linha e coluna. Sua velocidade o torna ideal para atribuições de valor único.
import pandas as pd
# DataFrame de exemplo
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data, index=['A', 'B', 'C'])
# Define o valor da célula na linha 'B' e coluna 'col1' como 10
df.at['B', 'col1'] = 10
print(df)
Isso terá como saída:
col1 col2
A 1 4
B 10 5
C 3 6
.at
é otimizado para velocidade e simplicidade ao lidar com células únicas. No entanto, tentar atribuir vários valores resultará em um TypeError
.
Definindo valores de células com .loc
O acessor .loc
fornece maior flexibilidade. Ele permite indexação baseada em rótulos para linhas e colunas e pode lidar com atribuições de valores únicos ou matrizes a várias células simultaneamente.
import pandas as pd
# DataFrame de exemplo
data = {'col1': [1, 2, 3], 'col2': [4, 5, 6]}
df = pd.DataFrame(data, index=['A', 'B', 'C'])
# Define o valor da célula na linha 'A' e coluna 'col2' como 100
df.loc['A', 'col2'] = 100
print(df)
# Definindo múltiplos valores
df.loc[['A', 'B'], 'col1'] = [5, 15] #Atribui 5 a A e 15 a B
print(df)
Isso terá como saída primeiro:
col1 col2
A 1 100
B 2 5
C 3 6
E então:
col1 col2
A 5 100
B 15 5
C 3 6
.loc
é o método mais versátil, adequado para atualizações de células únicas e cenários mais complexos envolvendo várias linhas e colunas. Embora versátil, para alterações de célula única, .at
é geralmente mais rápido.
O método .set_value()
depreciado
O método .set_value()
está depreciado nas versões mais recentes do Pandas. Embora possa ainda funcionar em versões mais antigas, usar .at
ou .loc
é fortemente recomendado para melhor compatibilidade e desempenho. Evite usar .set_value()
em código novo.
Em resumo, tanto .at
quanto .loc
oferecem maneiras eficazes de modificar células individuais em um DataFrame Pandas. Prefira .at
por sua velocidade e simplicidade com valores únicos, e .loc
por sua flexibilidade ao trabalhar com várias células ou modificações mais complexas.