Ich habe unten Tabelle. Ich möchte das Zeitdelta zwischen dem ersten und zweiten Datum, dem zweiten und dritten usw. in einer for-Schleife zählen. Ich möchte meine Daten in der Tabelle wirklich nicht in eine Ganzzahl konvertieren, um die Funktion timedelta () zu verwenden. Gibt es eine Funktion in Python, die str wie folgt konvertieren kann: '30 .06.2019 'oder 30/06/2019? Perfekt wäre, alle Registerkarten [i] [2] in Datum umzuwandeln und dann das Datum der Uhrzeit zwischen ihnen in einer Schleife zu zählen.

tab = [ [21091705,  0,'30.06.2019'],
        [21091705,  653777,'29.06.2019'],
        [21091705,  653842,'29.06.2019'],
        [21091705,  641701,'28.06.2019'],
        [21091705,  642000,'27.06.2019'],
        [21091705,  0,'25.06.2019'],
        [21091705,  642030,'25.06.2019'],
        [21091705,  642030,'25.06.2019'],
        [21091705,  637030,'25.06.2019'],
        [21091705,  0,'25.06.2019'],
        [21091705,  0,'17.05.2019'],
        [21091705,  0,'25.06.2019']
        ]
1
Ventre90 19 Feb. 2020 im 17:22

3 Antworten

Beste Antwort

Da Sie es nicht in eine Tabelle konvertieren möchten, können Sie Folgendes verwenden:

import datetime
import numpy as np

dates = list(map(lambda x: datetime.datetime.strptime(x[2], '%d.%m.%Y'), tab))
list(np.diff(dates))

[datetime.timedelta(days=-1),
 datetime.timedelta(0),
 datetime.timedelta(days=-1),
 datetime.timedelta(days=-1),
 datetime.timedelta(days=-2),
 datetime.timedelta(0),
 datetime.timedelta(0),
 datetime.timedelta(0),
 datetime.timedelta(0),
 datetime.timedelta(days=-39),
 datetime.timedelta(days=39)]
0
luigigi 19 Feb. 2020 im 14:30

Haben Sie die Funktion strptime(string, format) aus dem Modul datetime ausprobiert? Da alle Zeichenfolgen dasselbe Datumsformat haben, können Sie sie problemlos durchlaufen

https://docs.python.org/3/library/datetime.html?highlight=strptime#datetime.datetime.strptime

0
Jordan Kowal 19 Feb. 2020 im 14:27

Haben Sie datetime.datetime.strptime () ausprobiert?

Sie würden sich also eine Zeit nehmen (z. B. 25.02.2019): datetime.datetime.strptime ('25 .02.2019 ','% d.% M.% Y ')

Und es gibt das Datum / Uhrzeit-Format zurück. Wenn Ihr Datum in einem anderen Startformat vorliegt, ändern Sie einfach '% d.% M.% Y' in das richtige Format.

0
CogNitive 19 Feb. 2020 im 14:26