Jump to content

Incremento +1 do valor anterior conforme o valor de uma coluna


Recommended Posts

Estou com um problema para fazer um incremento +1 conforme o valor da coluna "Qtd_cartoes".

image.png

Preciso incrementar +1 no valor de "Nº_cartão" anterior conforme a coluna "Qtd_cartoes".

No exemplo da imagem, deveria adicionar +1 ao numero anterior, 56 vezes.

Depois que adicionar as 56 vezes, segue para um outro "Nº_cartão", adicionando +1 conforme a nova quantidade.

Já tentei utilizar o código abaixo e não funcionou.

df_rep['value'] = np.where(df_rep['Qtd_cartoes'] > 1, df_rep['Nº_cartão'] + 1, df_rep['Nº_cartão'])

Como deve ficar:

Nº_cartão - Qtd_cartoes

40327 - 56

40328 - 56

40329 - 56

40330 - 56

40331 - 56

40332 - 56

...

...

40853 - 112

40854 - 112

40855 - 112

...

...

Link to comment
Share on other sites

  • Pessoal da TecnoSpeed

Olá @carlosfarias segue abaixo um jeito de realizar o que você deseja. 👍

for qtd in df['Qtd_cartoes'].unique():
    numero = 0
    for index,row in df.iterrows():
        if df.loc[index,'Qtd_cartoes'] == qtd:
            df.loc[index,'N°_cartão'] = df.loc[index,'N°_cartão'] + numero
            numero += 1

Com isso você terá o seguinte resultado.

DataFrame antes do script                          DataFrame após o script                               Validação
                                                                                                                                       (Verifique os cartões de número 853)

image.png       image.png     image.png

Enfim espero que isso resolva sua dúvida, caso contrário fico a disposição para lhe ajudar. 😀

Link to comment
Share on other sites

Em 12/08/2022 at 16:50, Thanael disse:

Olá @carlosfarias segue abaixo um jeito de realizar o que você deseja. 👍

for qtd in df['Qtd_cartoes'].unique():
    numero = 0
    for index,row in df.iterrows():
        if df.loc[index,'Qtd_cartoes'] == qtd:
            df.loc[index,'N°_cartão'] = df.loc[index,'N°_cartão'] + numero
            numero += 1

Com isso você terá o seguinte resultado.

DataFrame antes do script                          DataFrame após o script                               Validação
                                                                                                                                       (Verifique os cartões de número 853)

image.png       image.png     image.png

Enfim espero que isso resolva sua dúvida, caso contrário fico a disposição para lhe ajudar. 😀

É exatamente isso que preciso, porém fui testar aqui e esta dando o seguinte erro. Saberia me dizer o porquê?

image.png

Link to comment
Share on other sites

  • Pessoal da TecnoSpeed

Bom dia @carlosfarias, tenta fazer o seguinte, antes do FOR executa 

df.reset_index()

Para resetar os index ai tenta executar normalmente o código.

Caso mesmo assim não funcionar poderia me mandar um print do dataframe contendo os index? igual na imagem que mandei anteriormente.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Who's Online   0 Members, 0 Anonymous, 7 Guests (See full list)

    • There are no registered users currently online
×
×
  • Create New...