Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Como retirar o sufixo de dados e transformacao de datas em Python

Ola pessoal,

Alguém sabe me dizer como retirar o sufixo de um dado.

Exemplo: Tenho os dados de datas assim: 20141013T000000

A minha ideia é retirar o sufixo "T000000" e transformar a data "20141013" para o padrão 2014-10-13 Alguém consegue me dar um help.

Desde ja obrigado

4 respostas

Bom dia Ricardo, tudo bem? Espero que sim!

Você pode utilizar o método apply, vou dar um exemplo aqui, mas você aplica aí no seu conjunto de dados, com o nome adequado da sua coluna e DataFrame, ok?

Supondo que o DataFrame tenha nome df e a coluna da data tenha nome 'data':

df['data'] = df['data'].apply(lambda x : x.split('T')[0])

Isso vai substituir sua coluna de datas por uma nova sem o sufixo, uma vez que vai aplicar uma função lambda para cada elemento da sua coluna, dando um split através do T e pegando a primeira parte da lista gerada que são os números da data.

Após isso, verifique se a coluna estará em formato object. Vai precisar estar para executar o próximo apply, se não tiver, transforme a coluna de data novamente para object.

Para checar o dtype, digite:

df.dtypes

Agora, vamos adicionar os hífens entre os números:

df['data'] = df['data'].apply(lambda x : f'{x[0:4]}-{x[4:6]}-{x[6:]}')

Dessa maneira será adicionado hífens entre os números em cada um das linhas da sua coluna.

Espero que tenha tirado sua dúvida.

Estou à disposição. Bons estudos!

Fala João, tranquilo?

Muito obrigado pela ajuda. Realmente as funções funcionaram, porem na ultima o resultado ficou com um hifen a mais:

2014--1-0-13

Você sabe como remover?

Desde ja agradeco, Ricardo

solução!

Fala Ricardo,

Quando utilizei aqui no meu computador funcionou de maneira adequada:

Mudar data com apply

Mas vamos tentar criar uma função e usá-la no apply. Primeira coisa a se fazer é retornar o seu DataFrame ao estado original, e aplicar somente esse trecho aqui, para que as datas fiquem no formato YYYYmmdd:

df['data'] = df['data'].apply(lambda x : x.split('T')[0])

Agora vamos criar uma função que será bem parecida com a do segundo trecho que te passei:

def coloca_hifen(data):
    nova_data = f'{data[0:4]}-{data[4:6]}-{data[6:]}'
    return nova_data

Agora vamos passar essa função dentro do apply:

teste['data'] = teste['data'].apply(coloca_hifen)

Aqui está o exemplo de como ficou:

Mudar data com apply e função criada

Qualquer coisa me avisa aqui se deu certo.

Mais uma vez agradeco Joao, vou tentar executar hoje a noite.

Obrigado.