python – Como gerar um ID para identificar um aluno em uma base de dados com matriculas de vários anos?


Eu tenho a seguinte base de dados que contem matriculas de uma Instituição que estou desenvolvendo uma pesquisa, futuramente para fazer um mapeamento dos alunos eu preciso de um id que identifique cada aluno, em que com esse id eu possa identificar o aluno no ano seguinte, já que eu tenho dados de 2009 a 2018.

Para criar esse id eu estou utilizando as colunas com os atributos dos alunos que não muda independente do ano, que no caso são TP_COR_RACA, TP_SEXO, NU_ANO_NASCIMENTO, NU_MES_NASCIMENTO e NU_DIA_NASCIMENTO, a ideia é que a partir desses atributos eu crie um
id que repete sempre que essa combinação for a mesma.

Tentei fazer da seguinte forma:

def getKey(row):
    # retorna um str com os valores das colunas que são imutaveis independente do ano
    # que será usado como chave para gerar o Id.
    key = f"{row('TP_COR_RACA')}{row('TP_SEXO')}{row('NU_ANO_NASCIMENTO')}
    {row('NU_MES_NASCIMENTO')}{row('NU_DIA_NASCIMENTO')}"

    return key

def getDicId(df):
    # retorna um dicionário em que os index são as chaves, sem repetir.
    dic_id = {}
    for index, row in df.iterrows():
        key = getKey(row)
        dic_id(key) = 'null'

    # cria um id para cada chave do dicionario.
    idx = 1
    for i in dic_id:
        dic_id(i) = idx
        idx += 1

    return dic_id
 

def getId(df):
    df.loc(df_concat.TP_SEXO == 2, 'TP_SEXO') = 0
    dic_id = getDicId(df)
    df('Id') = 'null'
    # Obtem uma chave de cada matricula e atribui sue id usando  o 
    # dicionario que tem o index igual sua chave.
    for index, row in df.iterrows():
        key = getKey(row)
        df.loc(index, 'Id') = dic_id(key)
        
    return df

Porém não deu muito certo, se alguém souber a onde está o erro ou de que outra forma eu possa fazer isso eu agradeço.