Pandas: como substituir valores em uma coluna com base na condição


Você pode usar a seguinte sintaxe básica para substituir valores em uma coluna de um DataFrame do pandas com base em uma condição:

 #replace values in 'column1' that are greater than 10 with 20
df. loc [df[' column1 '] > 10, ' column1 '] = 20

Os exemplos a seguir mostram como usar essa sintaxe na prática.

Exemplo 1: Substitua valores em uma coluna com base em uma condição

Suponha que temos o seguinte DataFrame do pandas:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [5, 7, 7, 9, 12, 13, 9, 14],
                   ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]})

#view DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5       

Podemos usar o seguinte código para substituir cada valor na coluna “pontos” maior que 10 por um valor 20:

 #replace any values in 'points' column greater than 10 with 20
df. loc [df[' points '] > 10, ' points '] = 20

#view updated DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 20 6
5 B G 20 5
6 B F 9 9
7 B F 20 5

Observe que cada um dos três valores da coluna “pontos” maiores que 10 foram substituídos pelo valor 20.

Exemplo 2: Substitua valores em uma coluna com base em múltiplas condições

Suponha que temos o seguinte DataFrame do pandas:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'],
                   ' points ': [5, 7, 7, 9, 12, 13, 9, 14],
                   ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]})

#view DataFrame
df

	team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5       

Podemos usar o código a seguir para substituir cada valor na coluna “posição” onde os pontos são menores que 10 ou as assistências são menores que 5 pela string “Ruim”:

 #replace string in 'position' column with 'bad' if points < 10 or assists < 5
df. loc [(df[' points '] < 10) | (df[' assists '] < 5), ' position '] = ' Bad '

#view updated DataFrame
df

        team position points assists
0 A Bad 5 3
1 A Bad 7 8
2 A Bad 7 2
3 A Bad 9 6
4 B G 20 6
5 B G 20 5
6 B Bad 9 9
7 B F 20 5

Da mesma forma, podemos usar o código a seguir para substituir cada valor na coluna “posição” onde os pontos são menores que 10 e as passagens são menores que 5 pela string “Bad”:

 #replace string in 'position' column with 'bad' if points < 10 and assists < 5
df. loc [(df[' points '] < 10) & (df[' assists '] < 5), ' position '] = ' Bad '

#view updated DataFrame
df

        team position points assists
0 A Bad 5 3
1 A G 7 8
2 A Bad 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5

Observe que as duas linhas onde os pontos eram menores que 10 e as assistências eram menores que 5 tiveram seu valor de “posição” substituído pela string “Ruim”.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em pandas:

Como selecionar linhas com base em múltiplas condições no Pandas
Como criar uma nova coluna baseada em uma condição no Pandas
Como filtrar um DataFrame do Pandas em múltiplas condições

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *