[PYTHON] Da das von pandas.read_excel gelesene Excel-Datum ein serieller Wert war, wurde es in datetime.datetime konvertiert.

Koto no Hottan

Wenn ich mit pandas.read_excel ein Excel-Datum lese, werden die Daten aufgrund der Formatierung zu einer Seriennummer. Ich habe mich für die Konvertierung entschieden, weil ich sie einheitlich mit datetime.datetime verarbeiten möchte.

So konvertieren Sie den seriellen Wert von "int" in "datetime.datetime"

--Referenz

# date_int :Serienwert
if date_int < 60:
    # 1900-03-Vor 01
    days = date_int -1
else:
    # 1900-03-Für 01 oder später
    days = date_int - 2
date_time = pandas.to_datetime('1900/01/01') + datetime.timedelta(days=days)

Ich habe es so versucht

--Umgebung --macOS Catalina Version 10.15.7

Die zu lesende Excel-Datei sieht folgendermaßen aus スクリーンショット 2020-10-14 22.48.11.png

import datetime
import pandas


def get_datetime(val: object) -> datetime.datetime:
    """Holen Sie sich das Datum.
    :param val:Der ursprüngliche Wert des Datums
    :return:Datum, wenn Datum oder Seriennummer, sonst keine
    """
    val_type = type(val)
    # datetime.Wenn es datetime ist, geben Sie es so zurück, wie es ist
    if val_type is datetime.datetime:
        return val
    # pandas.Zeitstempel ist Datum / Uhrzeit.Es erbt datetime und datetime.Es scheint, dass es als Datum / Uhrzeit verarbeitet werden kann. Geben Sie es also so zurück, wie es ist
    if issubclass(val_type, datetime.datetime):
        return val
    #Wenn es int ist, wird datetime als serieller Wert angegeben.In Datum / Uhrzeit konvertieren und zurückkehren
    if val_type is int:
        if val < 60:
            # 1900-03-Vor 01
            days = val -1
        else:
            # 1900-03-Für 01 oder später
            days = val - 2
        return pandas.to_datetime('1900/01/01') + datetime.timedelta(days=days)
    return None


if __name__ == '__main__':
    #Laden Sie Excel mit Pandas
    sheet = pandas.read_excel('Book.xlsx', sheet_name='Sheet1', header=None)
    for index, row in sheet.iterrows():
        date = get_datetime(row[0])
        if date is not None:
            print(date.strftime('%Y/%m/%d'))

Ausgabe


2020/10/14
2020/10/15
2020/10/16
2020/10/17

Recommended Posts

Da das von pandas.read_excel gelesene Excel-Datum ein serieller Wert war, wurde es in datetime.datetime konvertiert.
So lesen Sie Seriennummerndateien in einer Schleife, verarbeiten sie und zeichnen sie grafisch auf
Es war ein Leben, das ich auf AWS Lambda OCR wollte, um die Charaktere zu lokalisieren.
Da es Doppelgenger gab, habe ich versucht, es mit künstlicher Intelligenz zu unterscheiden (lacht) (Teil 2)
[Python] Ändern Sie den Namen der Bilddatei in eine Seriennummer
Selbst wenn ich jpg in png konvertiert habe, habe ich es geschafft, weil die Transparenz nicht manipuliert wurde
Ich habe GhostScript mit Python ausgeführt, das PDF in Seiten aufgeteilt und es in ein JPEG-Bild konvertiert.
Als ich versuchte, Python auszuführen, wurde ich zum Microsoft Store übersprungen
[Django] Erstellt ein Feld zur Eingabe von Daten mit 4-stelligen Zahlen
[Bash] Befehl zum zeilenweisen Schreiben von Dateien in die Seriennummer [One Liner (?)]
Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
Ich möchte CSV Zeile für Zeile lesen, während ich den Feldtyp konvertiere (während der Fortschrittsbalken angezeigt wird) und ihn verarbeiten.
Als ich in IPython versuchte, den Wert zu sehen, war es ein Generator, also kam ich auf ihn, als ich frustriert war.
Ich wollte die Anzahl der Zeilen in mehreren Dateien wissen und versuchte, sie mit einem Befehl abzurufen
Die mit vim bearbeitete Datei war schreibgeschützt, aber ich möchte sie speichern
P100-PCIE-16GB wurde der GPU von Google Colab hinzugefügt, bevor ich es wusste
Ich habe versucht, die Daten des Laptops durch Booten unter Ubuntu zu retten
Beachten Sie, dass ich süchtig danach war, TensowFlow einzurichten
Es ist ein Jahr her, seit ich in die Abteilung für Webanwendungsentwicklung gewechselt bin, also blicke ich zurück