Pandas ist eine leistungsstarke Python-Bibliothek zur Datenmanipulation und -analyse. Die Arbeit mit Datums- und Uhrzeitangaben ist eine gängige Aufgabe, und oft enthalten Ihre Daten Datums- und Uhrzeitinformationen in String- oder anderen Nicht-Datetime-Formaten. Dieser Artikel demonstriert verschiedene effiziente Techniken zum Konvertieren von Pandas DataFrame-Spalten in den Datentyp datetime, wodurch die Zeitreihenanalyse und -manipulation deutlich vereinfacht wird.
Inhaltsverzeichnis:
- Effiziente Datums- und Uhrzeitkonvertierung mit
pd.to_datetime()
- Verarbeitung komplexer Formate mit
apply()
- Gleichzeitige Konvertierung mehrerer Spalten
- Verwendung von
astype()
für einfache Konvertierungen
1. Effiziente Datums- und Uhrzeitkonvertierung mit pd.to_datetime()
Der einfachste und empfohlene Ansatz ist die Verwendung der Funktion pd.to_datetime()
. Diese Funktion ist sehr vielseitig und kann eine Vielzahl von Datums- und Uhrzeitformaten verarbeiten.
import pandas as pd
data = {'date_str': ['2024-03-08', '2024-03-09', '2024-03-10']}
df = pd.DataFrame(data)
# Konvertiert die Spalte 'date_str' in datetime
df['date'] = pd.to_datetime(df['date_str'])
print(df)
print(df.dtypes)
Dieser Code-Snippet erstellt einen DataFrame mit einer Spalte von Datumszeichenketten. pd.to_datetime()
erkennt das Format automatisch und konvertiert die Zeichenketten in datetime-Objekte. Die dtypes
-Ausgabe bestätigt die erfolgreiche Konvertierung. pd.to_datetime()
verarbeitet auch Formate mit Zeitkomponenten und bietet Fehlerbehandlung über den Parameter errors
(z. B. ‚coerce‘, um ungültige Daten durch NaT zu ersetzen).
2. Verarbeitung komplexer Formate mit apply()
Die Methode apply()
bietet erhöhte Flexibilität, insbesondere bei der Behandlung komplexer Datumsformate oder benutzerdefinierter Parsing-Logik.
import pandas as pd
data = {'date_str': ['Mar 8, 2024', 'Mar 9, 2024', 'Mar 10, 2024']}
df = pd.DataFrame(data)
# Benutzerdefinierte Funktion zum Parsen der Datumszeichenkette
def parse_date(date_str):
return pd.to_datetime(date_str, format='%b %d, %Y')
df['date'] = df['date_str'].apply(parse_date)
print(df)
print(df.dtypes)
Hier wird eine benutzerdefinierte Funktion parse_date
definiert, um ein bestimmtes Datumsformat zu verarbeiten. Die Methode apply()
wendet diese Funktion auf jedes Element in der Spalte ‚date_str‘ an. Dieser Ansatz ist vorteilhaft, wenn inkonsistente Datumsformate vorliegen oder eine spezielle Behandlung erforderlich ist.
3. Gleichzeitige Konvertierung mehrerer Spalten
Die Methode apply()
kann erweitert werden, um mehrere Spalten gleichzeitig zu konvertieren.
import pandas as pd
data = {'date_str': ['Mar 8, 2024', 'Mar 9, 2024', 'Mar 10, 2024'],
'time_str': ['10:00:00', '12:30:00', '14:45:00']}
df = pd.DataFrame(data)
def parse_date_time(row):
return pd.to_datetime(row['date_str'] + ' ' + row['time_str'], format='%b %d, %Y %H:%M:%S')
df['datetime'] = df.apply(parse_date_time, axis=1)
print(df)
print(df.dtypes)
Dieses Beispiel kombiniert Datums- und Uhrzeitzeichenketten aus separaten Spalten. Das Argument axis=1
in apply()
gibt die zeilenweise Funktionsanwendung an.
4. Verwendung von astype()
für einfache Konvertierungen
Die Methode astype()
bietet eine prägnante Konvertierungsmethode, ist aber weniger flexibel als pd.to_datetime()
. Sie ist am effektivsten, wenn Ihre Daten bereits in einem Format vorliegen, das Pandas direkt interpretieren kann.
import pandas as pd
data = {'date_str': ['2024-03-08', '2024-03-09', '2024-03-10']}
df = pd.DataFrame(data)
df['date'] = pd.to_datetime(df['date_str']) #Zuerst in datetime-Objekt konvertieren mit pd.to_datetime für Flexibilität
df['date'] = df['date'].astype('datetime64[ns]') #Jetzt können wir astype verwenden
print(df)
print(df.dtypes)
Während astype
eine direkte Konvertierung bietet, wird pd.to_datetime
im Allgemeinen aufgrund seiner überlegenen Fehlerbehandlung und Formatflexibilität bevorzugt. Beachten Sie, dass eine vorläufige Konvertierung mit pd.to_datetime
notwendig ist, bevor astype
angewendet wird; andernfalls tritt ein Fehler auf.
Die optimale Methode hängt von der Komplexität Ihrer Daten und den spezifischen Anforderungen ab. Für die meisten Szenarien bietet pd.to_datetime()
die beste Balance zwischen Effizienz und Flexibilität. Die Methode apply()
bietet jedoch bei Bedarf Funktionen für benutzerdefinierte Funktionen, und astype
ist eine prägnante Lösung für einfache Fälle, in denen die Daten bereits in einem geeigneten Format vorliegen.