Deletar e substituir números e letras de linhas de uma coluna com pandas/dask

Eu tenho duas colunas com a mesma informação, mas uma está censurada e outra não. Eu quero mesclar as duas colunas, mantendo apenas as linhas que se repetem nas duas colunas.

Exemplo:

Coluna 1    Coluna 2

***456789** 12345678910

Primeiro, eu preciso remover os asteríscos da coluna 1 e, depois, remover os três primeiros números e os dois últimos da coluna dois. Assim, eu consigo mesclar as duas colunas.

1 Curtida

@gustavomadmax, tudo bem?

Pelo exemplo, você tem uma coluna de object e outra de int. Então acho que a melhor forma de fazer isso é com essas linhas:

# Transformar tudo em `object`
df[['col1', 'col2']] = df[['col1', 'col2']].astype(str)

# Passar uma função lambda pegando só o intervalo desejado
df['col1'] = df['col1'].apply(lambda x: x[3:9])
df['col2'] = df['col2'].apply(lambda x: x[3:9])

O resultado será algo assim:

col1 col2
0 456789 456789

Há outras formas de fazer isso (com for loop, função etc.), mas esta é a que primeiro me veio à mente.

Cabe ressaltar dois pontos:

  1. Ao final, você terá duas colunas do tipo object, apenas de serem números.
  2. Será que simplesmente ignorar os algarismos escondidos nos asteriscos é uma boa ideia? Não há a possibilidade de os algarismos do meio se repetirem em CPFs diferentes (supondo que são CPFs)?

Boa sorte aí.

1 Curtida

Muito obrigado! Eu solucionei de outra forma, mas obrigado mesmo assim. Tenho essa mania de criar o tópico enquanto ainda estou pesquisando rs.

Realmente, não uma boa ideia.São dados do auxílio emergencial. Porém, depois dessa limpeza, eu checo o CPF inteiro no site do governo e vejo se as informações restantes batem, como nome, cidade etc. Alguns inclusive são doadores da eleições, então é uma dupla confirmação.

1 Curtida

Minha solução foi criar uma nova coluna com a máscara:

dfcandidatos2[“CPFBENEFICIÁRIO”]= “*." + dfcandidatos2[“NR_CPF_CANDIDATO”].str[3:6] + “.” + dfcandidatos2[“NR_CPF_CANDIDATO”].str[6:9] + "-