0
votes

Répartition de la valeur DateTime hors de la chaîne de texte avec une longueur inégale

Système: strong> Win10

IDE: strong> MS Visual Studio Code P>

Langue: strong> Python version 3.7.3 p>

Bibliothèque: strong> Pandas version 1.0.1 P>

Source de données: strong> fourni dans l'exemple ci-dessous p>

Dataset: STRT> fourni dans l'exemple ci-dessous P>

Demandez: strong> p>

J'ai besoin de diviser la date et la chaîne d'heure d'une colonne À partir d'une image de données contenant des rangées de délimiteurs inégaux, c'est-à-dire certaines avec trois et certaines avec quatre virgules. P>

J'essaie de déterminer comment dépasser les valeurs de date et d'heure: '11 nov. 2013 12 : 00m ' code> et' avril 11 2013 12:00 AM ' code> respectivement désactivé de l'arrière de ces deux enregistrements dans une colonne dans une nouvelle colonne donnée la deuxième ligne de l'exemple ci-dessous contient moins de virgules . p>

Code: strong> p> xxx pré>

tandis que la méthode ci-dessous étend les données dans différentes colonnes et staggers quelle colonne abrite la date, Cela ne fonctionne pas. J'ai besoin de la date et de l'heure (ou ev FR Juste date) Informations dans une colonne de sorte que je puisse utiliser les valeurs de date dans une analyse ultérieure (par exemple de série temporelle). p>

code: strong> p>

df['sample field'].str.split(",", expand=True)


0 commentaires

3 Réponses :


1
votes

IIUC Vous avez besoin str.extract avec une expression régulière.

Regex démo ici xxx


xxx

4 commentaires

Cette méthode semble fonctionner partiellement, mais uniquement pour ces dossiers dates avec un numéro unique, c'est-à-dire> Celui-ci: 4457 - J'ai besoin, cela, date, 11 nov. 2013 12h00,> Celui-ci: 2359 - J'ai besoin de cela, date , Avril 11 2013 12h00, mais pas ceci:> Celui-ci: 4457 - J'ai besoin, ceci, date, nov. 2013 12h00,> Celui-ci: 2359 - J'ai besoin de cela, date, avril 1 2013 12:00 ,


@Alfredhull, je viens de coller ceux-ci dans la démo Regex ci-dessus et cela a fonctionné, je suis comptabilisé à 1 chiffres en utilisant \ d.


Je viens de ré-écrire le code dans le code vs à nouveau et pour les éléments de ligne dans la liste pour une raison quelconque, ils montrent toujours concaténés. J'ai essayé l'exemple de IIUC et il a fixé le numéro de date unique par rapport au double entier.


Je veux dire le poste de Wwnde ci-dessus.



2
votes

DATA

df['Date']= df.Text.str.extract('([A-Za-z]+\s+\d+\s+\d+\s+\d+:[0-9A-Z]+(?=\s+\,+))')
df



 #df.Date=pd.to_datetime(df.Date).dt.strftime('%b %d %Y %H:%M%p')
#df['date']  = pd.to_datetime(df['date'] ,format='%b %d %Y %H:%M%p')
    df['Date']=pd.to_datetime(df['Date'])#This or even df['Date']=pd.to_datetime(df['Date'], format=('%b %d %Y %I:%M%p')) could work. Just remmeber because your time is 12AM use 12 clock hour system %I not %H and also hour 00.00 likely to be trncated, If have say11.00AM, the time will appear


2 commentaires

Pouvez-vous vérifier cette pièce de votre code: avec .info () pour dtype. Cette solution fonctionne et je veux le marquer bien, mais cette partie a transformé le DTYPE en une chaîne: # .dt.strftime (% b% d% y% h:% m% p '). Je ne pense pas que ce soit nécessaire.


Bravo Friend! Cela a bien fonctionné comme alternatif. J'admets que j'ai besoin de lire la documentation sur les regex pour m'en connaître. Excellent travail, et merci.



1
votes

Je vais utiliser les données @ wwnde: xxx


1 commentaires

Merci de récupérer cette approche vérifie également. Merci!