Pandas pd.to_datetime()-Funktion
pd.to_datetime()ist eine Funktion in der Pandas-Bibliothek, mit derDaten in den datetime-Typ konvertiert werdenSie kann Daten in verschiedenen Formaten, wie Zeichenfolgen, Unix-Zeitstempeln usw., in den datetime64-Typ von Pandas konvertieren.
Datetime-Verarbeitung ist eine häufige Aufgabe in der Datenanalyse. Nach der Konvertierung in den datetime-Typ können Sie bequem Vorgänge wie Datumsextraktion, Zeitarithmetik und Zeitzonenbehandlung durchführen.
Begriffserklärung: to_datetimeEs bedeutet "in datetime konvertieren", d. h. Zeitdaten in verschiedenen Formaten einheitlich in standardmäßige datetime-Objekte umzuwandeln.
Grundlegende Syntax und Parameter
pd.to_datetime()ist eine Top-Level-Funktion in der Pandas-Bibliothek, die verwendet wird, um Zeitdaten in verschiedenen Formaten in den datetime-Typ zu konvertieren.
Syntaxformat
pd.to_datetime(arg, errors='raise', dayfirst=False, yearfirst=False, utc=False, format=None, unit='ns')
Parameterbeschreibung
| Parameter | Type | Beschreibung |
|---|---|---|
| arg | Ganzzahl, Gleitkommazahl, Zeichenfolge, datetime, Liste, Series | Die Daten, die in den datetime-Typ konvertiert werden sollen. |
| errors | String | Fehlerbehandlungsmethode: 'raise' (Standard) löst eine Ausnahme aus; 'coerce' konvertiert in NaT; 'ignore' gibt die Originaldaten zurück. |
| dayfirst | Boolean | Wenn True, wird der Tag vor dem Monat platziert (z. B. bedeutet 01/02/2023 den 2.). |
| utc | Boolean | Wenn True, wird ein datetime in der UTC-Zeitzone zurückgegeben. |
| format | String | Gibt das datetime-Format an, wie z. B. '%Y-%m-%d'. |
| Einheit | String | Wenn arg numerisch ist, gibt die Einheit an: 'D', 's', 'ms', 'us', 'ns'. |
Beschreibung des Rückgabewerts
- Rückgabewert: Gibt eine Series vom Typ datetime64 zurück.
- Auswirkung: Konvertiert die Eingabedaten in den Pandas-datetime-Typ, was die Durchführung von datetime-Operationen erleichtert.
Beispiele
Lass uns durch eine Reihe von Beispielen von einfach bis komplex gründlich meistern,pd.to_datetime()seine Verwendung gründlich beherrschen.
Beispiel 1: Grundlegende Verwendung – Konvertieren von Zeichenfolgen in Datetime
Beispiele
# 1. Eine Series aus datetime-Strings erstellen
dates = pd.Series([
'2023-01-01',
'2023-01-02',
'2023-01-03',
'2023-01-04',
'2023-01-05'
])
print("=== Ursprüngliche Serie (Typ:", dates.dtype, ")===")
print(dates)
# 2. Verwende pd.to_datetime(), um in den datetime-Typ zu konvertieren
result = pd.to_datetime(dates)
print("\n=== Nach pd.to_datetime()-Konvertierung (Typ:", result.dtype, ")===")
print(result)
# 3. Unterstützt mehrere Formate
dates_mixed = pd.Series([
'2023-01-01',
'2023/02/03',
'01.04.2023',
'May 6, 2023'
])
print("\n=== Automatisches Parsen mehrerer Formate ===)
print(pd.to_datetime(dates_mixed))
# 4. Informationen mit Zeitangabe
dates_with_time = pd.Series([
'2023-01-01 12:30:45',
'2023-02-03 08:15:30'
])
result_datetime = pd.to_datetime(dates_with_time)
print("\n=== Informationen mit Zeit ===)
print(result_datetime)
Run result:
=== 原始 Series(类型: object )=== 0 2023-01-01 1 2023-01-02 2 2023-01-03 3 2023-01-04 4 2023-01-05 dtype: object === pd.to_datetime() 转换后(类型: datetime64[ns] )=== 0 2023-01-01 00:00:00 1 2023-01-02 00:00:00 2 2023-01-03 00:00:00 3 2023-01-04 00:00:00 4 2023-01-05 00:00:00 === 多种格式自动解析 === 0 2023-01-01 00:00:00 1 2023-02-03 00:00:00 2 2023-04-01 00:00:00 3 2023-05-06 00:00:00 === 包含时间的信息 === 0 2023-01-01 12:30:45 1 2023-02-03 08:15:30
Code-Erklärung:
pd.to_datetime()Es kann verschiedene gängige Datetime-Formate automatisch erkennen.- Selbst wenn die Eingabe nur ein Datum enthält, wird der Zeitanteil standardmäßig auf 00:00:00 gesetzt.
- Es kann Datumsformate mit verschiedenen Trennzeichen verarbeiten, wie chinesische Schriftzeichen, Punkte und Schrägstriche.
Beispiel 2: Umgang mit verschiedenen Datumsformaten und dem dayfirst-Parameter
Für Datumsformate in verschiedenen Regionen können Sie dendayfirstParameter oder denformatParameter überschrieben werden.
Beispiele
# 1. Europäisches Datumsformat (Monat/Tag/Jahr)
europe_dates = pd.Series(['01/02/2023', '02/03/2023', '03/04/2023'])
print("=== Europäisches Datumsformat (01/02/2023 als der 2. interpretiert) ===")
print("Standard (Monat/Tag/Jahr):", pd.to_datetime(europe_dates).dt.day.tolist())
print("dayfirst=True:", pd.to_datetime(europe_dates, dayfirst=True).dt.day.tolist())
# 2. Verwenden Sie den Parameter format, um das genaue Format anzugeben
print("\n=== Verwendung des format-Parameters ===)
result = pd.to_datetime('2023-06-15 14:30:00', format='%Y-%m-%d %H:%M:%S')
print(f"Konvertierungsergebnis: {result}")
# 3. Komplexes Parsen von Formaten
complex_dates = pd.Series(['December 25, 2023', '15/08/2023', '2023-05-01'])
print("\n=== Automatisches Parsen gemischter Formate ===)
print(pd.to_datetime(complex_dates, dayfirst=True))
Run result:
=== 欧洲格式日期(01/02/2023 理解为 2 号)=== 默认: [1, 2, 3] dayfirst=True: [2, 3, 4] === 使用 format 参数 === 转换结果: 2023-06-15 14:30:00 === 混合格式自动解析 === 0 2023-12-25 00:00:00 1 2023-08-15 00:00:00 2 2023-05-01 00:00:00
Code-Erklärung:
formatDer Parameter gibt das genaue Format an und teilt Pandas eindeutig mit, wie das Datum zu parsen ist, wodurch Mehrdeutigkeit vermieden wird.- Die automatische Analyse ist sehr leistungsstark, aber wenn Mehrdeutigkeit besteht (z. B. bei der Interpretation von 01/02/2023), müssen Sie den
dayfirstoderformatParameter explizit angeben.
Beispiel 3: Unix-Zeitstempel in Datetime umwandeln
Aus Datenbanken oder Systemen exportierte Zeitstempel können mit derunitParameter überschrieben werden.
Beispiele
# 1. Unix-Zeitstempel (Sekunden)
timestamps = pd.Series([1672531200, 1672617600, 1672704000])
print("=== Unix-Zeitstempel (Sekunden) ===")
print(timestamps.values)
# 2. In Datetime umwandeln
result = pd.to_datetime(timestamps, unit='s')
print("\n=== Nach der Konvertierung mit pd.to_datetime(..., unit='s') ===)
print(result)
# 3. Unix-Zeitstempel (Millisekunden)
timestamps_ms = pd.Series([1672531200000, 1672617600000, 1672704000000])
result_ms = pd.to_datetime(timestamps_ms, unit='ms')
print("\n=== Zeitstempel auf Millisekundenebene ===)
print(result_ms)
# 4. Aus einem festen Ursprung konvertieren
print("\n=== Berechnet ab 2023-01-01 ===)
days = pd.Series([0, 1, 2, 3, 4])
result_origin = pd.to_datetime(days, origin='2023-01-01', unit='D')
print(result_origin)
Run result:
=== Unix 时间戳(秒)=== [1672531200 1672617600 1672704000] === pd.to_datetime(..., unit='s') 转换后 === 0 2023-01-01 00:00:00 1 2023-01-02 00:00:00 2 2023-01-03 00:00:00 === 毫秒级时间戳 === 0 2023-01-01 00:00:00 1 2023-01-02 00:00:00 2 2023-01-03 00:00:00 === 从 2023-01-01 开始计算 === 0 2023-01-01 1 2023-01-02 2 2023-01-03 3 2023-01-04 4 2023-01-05
Code-Erklärung:
unit='s'Bedeutet, dass die Einheit des Werts Sekunden ist (Unix-Zeitstempel).unit='ms'Bedeutet einen Millisekunden-Zeitstempel.originDer Parameter kann die Startzeit angeben, die zur Berechnung der relativen Zeit verwendet wird.
Beispiel 4: Umgang mit ungültigen Datumsangaben mit dem errors-Parameter
Beispiele
import numpy as np
# 1. Series mit ungültigen Datumsangaben
mixed_dates = pd.Series(['2023-01-01', '2023-02-30', 'invalid', '2023-03-15'])
print("=== Series mit ungültigen Datumsangaben ===")
print(mixed_dates)
# 2. errors='raise' (Standard) - löst eine Ausnahme aus
print("\n=== errors='raise' ===")
try:
pd.to_datetime(mixed_dates, errors='raise')
except Exception as e:
print(f"Ausnahme: {type(e).__name__}")
# 3. errors='coerce' - konvertiert ungültige Datumsangaben in NaT
print("\n=== errors='coerce' ===")
result = pd.to_datetime(mixed_dates, errors='coerce')
print(result)
# 4. errors='ignore' - bleibt unverändert
print("\n=== errors='ignore' ===")
result_ignore = pd.to_datetime(mixed_dates, errors='ignore')
print(result_ignore)
print(f"Type: {result_ignore.dtype}")
Run result:
=== 包含无效日期的 Series === 0 2023-01-01 1 2023-02-30 2 invalid 3 2023-03-15 === errors='raise' === 异常: OutOfBoundsDatetime === errors='coerce' === 0 2023-01-01 00:00:00 1 NaT 2 NaT 3 2023-03-15 00:00:00 === errors='ignore' === 0 2023-01-01 1 2023-02-30 2 invalid 3 2023-03-15 dtype: object
Code-Erklärung:
errors='coerce'Konvertiert sowohl ungültige Datumsangaben als auch nicht parsebare Werte in NaT (Not a Time, entspricht einem fehlenden Wert).- Dies ist sehr nützlich beim Umgang mit unsauberen Daten, da es die Kontinuität der Datenverarbeitung aufrechterhält.
Hinweise
Wichtiger Hinweis:
- Wenn ein Wert in den Daten den Datetime-Bereich überschreitet, wird ein
OutOfBoundsDatetimeAusnahme.formatDer Parameter kann das Datumsformat explizit angeben. Es wird empfohlen, ihn bei der Verarbeitung großer Datenmengen zu verwenden, um die Leistung zu verbessern.- Das konvertierte datetime-Objekt kann den
.dtAccessor für umfangreiche datetime-Operationen verwenden.- Die Behandlung von Zeitzonen erfordert die Installation der
pytzBibliothek.
Andere Erweiterungen
Gängige Pandas-Funktionen