Pandas: so berechnen sie die differenz zwischen zwei daten
Sie können die folgende Syntax verwenden, um eine Differenz zwischen zwei Datumsangaben in einem Pandas-DataFrame zu berechnen:
df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')
In diesem speziellen Beispiel wird die Differenz zwischen den Datumsangaben in den Spalten end_date und start_date in Tagen berechnet.
Beachten Sie, dass wir das „D“ in der Funktion timedelta64() durch die folgenden Werte ersetzen können, um die Datumsdifferenz in verschiedenen Einheiten zu berechnen:
- W : Wochen
- M : Monat
- Y : Jahre
Die folgenden Beispiele zeigen, wie man in der Praxis eine Datumsdifferenz in einem Pandas DataFrame berechnet.
Beispiel 1: Berechnen Sie die Differenz zwischen zwei Datumsangaben mit Datetime-Spalten
Angenommen, wir haben den folgenden Pandas-DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' start_date ': pd. date_range (start=' 1/5/2020 ', periods= 6 , freq=' W '), ' end_date ': pd. date_range (start=' 6/1/2020 ', periods= 6 , freq=' M ')}) #view DataFrame print (df) start_date end_date 0 2020-01-05 2020-06-30 1 2020-01-12 2020-07-31 2 2020-01-19 2020-08-31 3 2020-01-26 2020-09-30 4 2020-02-02 2020-10-31 5 2020-02-09 2020-11-30 #view dtype of each column in DataFrame df. dtypes start_date datetime64[ns] end_date datetime64[ns] dtype:object
Da beide Spalten im DataFrame bereits einen datetime64- Typ haben, können wir die Differenz zwischen Start- und Enddatum mit der folgenden Syntax berechnen:
import numpy as np
#create new columns that contains date differences
df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')
df[' diff_weeks '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' W ')
df[' diff_months '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' M ')
df[' diff_years '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' Y ')
#view updated DataFrame
print (df)
start_date end_date diff_days diff_weeks diff_months diff_years
0 2020-01-05 2020-06-30 177.0 25.285714 5.815314 0.484610
1 2020-01-12 2020-07-31 201.0 28.714286 6.603832 0.550319
2 2020-01-19 2020-08-31 225.0 32.142857 7.392349 0.616029
3 2020-01-26 2020-09-30 248.0 35.428571 8.148011 0.679001
4 2020-02-02 2020-10-31 272.0 38.857143 8.936528 0.744711
5 2020-02-09 2020-11-30 295.0 42.142857 9.692191 0.807683
Die neuen Spalten enthalten die Datumsunterschiede zwischen Start- und Enddatum in Tagen, Wochen, Monaten und Jahren.
Beispiel 2: Berechnen Sie die Differenz zwischen zwei Datumsangaben mit Zeichenfolgenspalten
Angenommen, wir haben den folgenden Pandas-DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' start_date ': ['2020-01-05', '2020-01-12', '2020-01-19'], ' end_date ': ['2020-06-30', '2020-07-31', '2020-08-31']}) #view dtype of each column print ( df.dtypes ) start_date object end_date object dtype:object
Da keine Spalte im DataFrame den Typ datetime64 hat, erhalten wir eine Fehlermeldung, wenn wir versuchen, die Differenz zwischen den Datumsangaben zu berechnen:
import numpy as np
#attempt to calculate date difference
df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')
TypeError : unsupported operand type(s) for -: 'str' and 'str'
Sie müssen zuerst pd.to_datetime verwenden, um jede Spalte in das Datetime-Format zu konvertieren, bevor Sie die Differenz zwischen den Datumsangaben berechnen:
import numpy as np
#convert columns to datetime
df[[' start_date ', ' end_date ']] = df[[' start_date ', ' end_date ']]. apply (pd. to_datetime )
#calculate difference between dates
df[' diff_days '] = (df[' end_date '] - df[' start_date ']) / np. timedelta64 ( 1 ,' D ')
#view updated DataFrame
print (df)
start_date end_date diff_days
0 2020-01-05 2020-06-30 177.0
1 2020-01-12 2020-07-31 201.0
2 2020-01-19 2020-08-31 225.0
Da wir jede Spalte zunächst in das Datum/Uhrzeit-Format konvertiert haben, konnten wir die Differenz zwischen den Datumsangaben erfolgreich und fehlerfrei berechnen.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in Pandas ausgeführt werden:
So erstellen Sie einen Datumsbereich in Pandas
So extrahieren Sie den Monat aus dem Datum in Pandas
So konvertieren Sie den Zeitstempel in Pandas in Datum/Uhrzeit