Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Coluna de dados por evento incremental

Olá, bom dia! Tudo bem? Estou buscando criar o controle de pneus por "Km Rodado por Vida", nisso teria que gerar uma coluna condicional no banco tratando no histórico em que vida o pneu se encontra na "data do evento", tipo ele começar com a vida "1" e quando chegar no evento "10" ele muda para vida "2" e assim incrementando conforme tendo esse evento. Então a forma que pensei para isso seria gerar uma coluna condicional que começaria com "1" e mudaria conforme o evento "10"(Reforma) para incrementar mais uma vida. Só que me gerou um problema no incremento, ele gerou para o primeiro pneu corretamente, mas posteriormente na interação não incrementou corretamente para os CD_PNEU posterior, segue abaixo código python:

df['VIDA'] = 1
ll = df.CD_PNEU.drop_duplicates().to_list()
for y in ll:
vida = 1
tam = len(df[df['CD_PNEU'] == y])
#print(tam) # Para setar a quantidade de eventos de pneu que separa por CD_PNEU 
#print(range(tam)) # range(0, 4) -- Percorre o total de evento de Pneu
for x in range(tam):
    #print(x) # Lista os eventos de cada pneu e conta
    #evento = df.loc[x, 'CD_EVENTO'] == 10
    #print(df.drop_duplicates(['CD_PNEU','VIDA']))
    evento = df.loc[x, 'CD_EVENTO'] == 10
    #print(evento) # Campo booleano testando a regra do evento = 10 em cima do interador "x"

    if evento:  #evento dando verdadeiro  
        c = x # interador
        #print(c)
        vida += 1 #incrementador
        #print(vida)
        print('a', vida, x)
        df['VIDA'][c+1] =  vida
        while c < tam:
            #print(c, tam, vida)
            #print(tam)
            df['VIDA'][c+1] = vida

            c+=1


    else:
        pass
        #print('b', vida, x)

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, bom dia!

Resolvido com um código de python a coluna "Vida":


df = df.sort_values(['CD_PNEU', 'DH_EVENTO'])
df = df.reset_index()

df['inicioPneu'] = df.groupby('CD_PNEU').cumcount()
df['inicioPneu'] = df['inicioPneu'].map(lambda x: 1 if x==0 else np.nan)

df['Vida'] = df[df['CD_EVENTO']==10].groupby('CD_PNEU').cumcount() + 2

df['Vida'] = df['Vida'].combine_first(df['inicioPneu'])

df['Vida'] = df['Vida'].ffill()
df = df.drop(columns='inicioPneu')

Att,