You can use replace with a dictionary.
Importing the package:
import pandas as pd
Creating the first data frame:
Grau_Instr_Bibl = {'Categoria': ['Analfabeto', 'Até 5ª Incompleto', '5ª Completo Fundamental', '6ª a 9ª Fundamental', 'Fundamental Completo', 'Médio Incompleto', 'Médio Completo', 'Superior Incompleto', 'Superior Completo', 'MESTRADO', 'DOUTORADO', 'IGNORADO'],
'Valores na fonte': ['1','2','3','4','5','6','7','8','9','10','11','-1']
}
Grau_Instr_Bibli = pd.DataFrame(data=Grau_Instr_Bibl)
Simulating your source file '':
fonte = pd.DataFrame({'Valores na fonte': ['1','2','3','4','5','6','7','8','9','10','11','-1']})
Here we create the dictionary with key and values of Grau_Instr_Bibli
, and replaced in fonte
:
fonte.replace(Grau_Instr_Bibli.set_index('Valores na fonte').to_dict()['Categoria'], inplace = True)
Entree:
Valores na fonte
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 -1
Exit:
Valores na fonte
0 Analfabeto
1 Até 5ª Incompleto
2 5ª Completo Fundamental
3 6ª a 9ª Fundamental
4 Fundamental Completo
5 Médio Incompleto
6 Médio Completo
7 Superior Incompleto
8 Superior Completo
9 MESTRADO
10 DOUTORADO
11 IGNORADO
Creating a new column:
fonte['Nova coluna'] = fonte.replace(Grau_Instr_Bibli.set_index('Valores na fonte').to_dict()['Categoria'])
Note that I removed the inplace = True
Exit:
Valores na fonte Nova coluna
0 1 Analfabeto
1 2 Até 5ª Incompleto
2 3 5ª Completo Fundamental
3 4 6ª a 9ª Fundamental
4 5 Fundamental Completo
5 6 Médio Incompleto
6 7 Médio Completo
7 8 Superior Incompleto
8 9 Superior Completo
9 10 MESTRADO
10 11 DOUTORADO
11 -1 IGNORADO
Complete code:
import pandas as pd
Grau_Instr_Bibl = {'Categoria': ['Analfabeto', 'Até 5ª Incompleto', '5ª Completo Fundamental', '6ª a 9ª Fundamental', 'Fundamental Completo', 'Médio Incompleto', 'Médio Completo', 'Superior Incompleto', 'Superior Completo', 'MESTRADO', 'DOUTORADO', 'IGNORADO'],
'Valores na fonte': ['1','2','3','4','5','6','7','8','9','10','11','-1']}
Grau_Instr_Bibli = pd.DataFrame(data=Grau_Instr_Bibl)
fonte = pd.DataFrame({'Valores na fonte': ['1','2','3','4','5','6','7','8','9','10','11','-1']})
fonte['Nova coluna'] = fonte.replace(Grau_Instr_Bibli.set_index('Valores na fonte').to_dict()['Categoria'])
Thank you so much for your help! But I had to modify it to fit my problem, like the column
df[Grau Instrução]
of the original dataframe was type int64, I had to adapt the idea of s, as follows:s = {1: 'Analfabeto', 2: 'Até 5ª Incompleto', 3: '5ª Completo Fundamental', 4: '6ª a 9ª Fundamental', 5: 'Fundamental Completo', 6: 'Médio Incompleto', 7: 'Médio Completo', 8: 'Superior Incompleto', 9: 'Superior Completo', 10: 'MESTRADO', 11: 'DOUTORADO', -1: 'IGNORADO'}
placing the indices as int, inside the variable s this way the method worked! Thank you to all!– Luis Henrique Batista