Comment séparer les dates dans la colonne Date ci-dessous. Les caractères de séparation sont Y, X ou ""? xx = {'Code': ["001", "002", "003"], 'Date': ["...

2
Hummer 17 mars 2021 à 01:16

1 réponse

Meilleure réponse

Vous pouvez diviser les données de la colonne directement avec un modèle \D+ qui correspond à un ou plusieurs caractères autres que des chiffres (puisque l'espace, X ou Y ne sont pas des chiffres):

import pandas as pd
xx = {'Code': ["001", "002","003"], 'Date': ["202103151716Y202103151716","202103151716X202103151716","202103151716 202103151716"]}
df = pd.DataFrame(data=xx)
df[['Date1', 'Date2']] = df['Date'].str.split(r'\D+', 1, expand=True)
df['Date1'] = pd.to_datetime(df['Date1'])
df['Date2'] = pd.to_datetime(df['Date2'])
df
# =>  Code                       Date               Date1               Date2
#   0  001  202103151716Y202103151716 2021-03-15 17:16:00 2021-03-15 17:16:00
#   1  002  202103151716X202103151716 2021-03-15 17:16:00 2021-03-15 17:16:00
#   2  003  202103151716 202103151716 2021-03-15 17:16:00 2021-03-15 17:16:00

Il n'est donc pas nécessaire de remplacer quoi que ce soit en premier lieu.

Après la séparation avec des caractères non numériques, vous pouvez utiliser pd.to_datetime() pour convertir la valeur numérique datetime en un type datetime.

Notez que [ XY] est une classe de caractères qui correspond uniquement à un espace, X ou Y, mais il semble que le modèle \D+ sans chiffres devrait soyez prudent avec les données que vous avez montrées.

1
Wiktor Stribiżew 16 mars 2021 à 22:24