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:
- Ao final, você terá duas colunas do tipo
object, apenas de serem números.
- 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] + "-”