Pandas pd.Timedelta()-Funktion
pd.Timedelta()wird in der Pandas-Bibliothek verwendet, umZeitdeltas zu erstellen.Diese Funktion stellt die Dauer zwischen zwei Zeitpunkten dar und kann für Additions- und Subtraktionsoperationen mit Datums- und Zeitwerten verwendet werden.
Timedelta ist ein leistungsstarkes Werkzeug für den Umgang mit Zeitdauern und wird häufig in Szenarien wie der Berechnung der Differenz zwischen zwei Datumsangaben, dem Addieren oder Subtrahieren bestimmter Zeitlängen usw. verwendet.
Wortbedeutung: TimedeltaEs ist eine Kombination aus "time" und "delta" (Änderungsbetrag), was "Zeitinkrement" bedeutet, d. h. die Dauer eines Zeitraums.
Grundlegende Syntax und Parameter
pd.Timedelta()Es ist eine Funktion der obersten Ebene der Pandas-Bibliothek, die zum Erstellen von Timedelta-Objekten verwendet wird.
Syntaxformat
pd.Timedelta(value, unit='ns', **kwargs)
Parameterbeschreibung
| Parameter | Type | Erforderlich | Beschreibung | Standardwert |
|---|---|---|---|---|
| value | String, int, float, datetime.timedelta | Optional | Der umzuwandelnde Zeitdelta-Wert. | Keine |
| Einheit | String | Optional | Einheit, wenn value eine Zahl ist: 'D' (Tage), 'h' (Stunden), 'm' (Minuten), 's' (Sekunden), 'ms' (Millisekunden), 'us' (Mikrosekunden), 'ns' (Nanosekunden). | 'ns' |
| Tage | Integer | Optional | Anzahl der Tage. | 0 |
| hours | Integer | Optional | Anzahl der Stunden. | 0 |
| minutes | Integer | Optional | Anzahl der Minuten. | 0 |
| seconds | Integer | Optional | Anzahl der Sekunden. | 0 |
| milliseconds | Integer | Optional | Anzahl der Millisekunden. | 0 |
| Mikrosekunden | Integer | Optional | Anzahl der Mikrosekunden. | 0 |
| Nanosekunden | Integer | Optional | Anzahl der Nanosekunden. | 0 |
Beschreibung des Rückgabewerts
- Rückgabewert: Gibt ein Timedelta-Objekt zurück, das das Zeitintervall darstellt.
- Effekt: Kann für Additions- und Subtraktionsoperationen von Zeitstempeln verwendet werden oder zur Berechnung der Differenz zwischen zwei Zeitpunkten.
Beispiele
Lassen Sie uns durch eine Reihe von Beispielen von einfach bis komplex gründlich meistern,pd.Timedelta()seine Verwendung gründlich beherrschen.
Beispiel 1: Grundlegende Verwendung – Erstellen eines Timedelta
Beispiele
# 1. Timedelta mit einem String erstellen
print("=== Timedelta mit String erstellen ===")
td1 = pd.Timedelta('1 days')
print(f"pd.Timedelta('1 days'): {td1}")
td2 = pd.Timedelta('2 hours 30 minutes')
print(f"pd.Timedelta('2 hours 30 minutes'): {td2}")
td3 = pd.Timedelta('1 days 02:30:45')
print(f"pd.Timedelta('1 days 02:30:45'): {td3}")
td4 = pd.Timedelta('2 weeks')
print(f"pd.Timedelta('2 weeks'): {td4}")
# 2. Erstellen mit Schlüsselwortargumenten
print("n=== Erstellen mit Schlüsselwortargumenten ===")
td5 = pd.Timedelta(days=5, hours=10, minutes=30)
print(f"pd.Timedelta(days=5, hours=10, minutes=30): {td5}")
td6 = pd.Timedelta(hours=1.5)
print(f"pd.Timedelta(hours=1.5): {td6}")
# 3. Erstellen mit numerischem Wert und Einheit
print("n=== Erstellen mit numerischem Wert und Einheit ===")
td7 = pd.Timedelta(10, unit='D')
print(f"pd.Timedelta(10, unit='D'): {td7}")
td8 = pd.Timedelta(30, unit='m')
print(f"pd.Timedelta(30, unit='m'): {td8}")
# 4. Konvertieren von datetime.timedelta
print("n=== Konvertieren von datetime.timedelta ===")
import datetime
dt_td = datetime.timedelta(days=3, hours=6)
td9 = pd.Timedelta(dt_td)
print(f"Von datetime.timedelta: {td9}")
# 5. Timedelta-Attribute anzeigen
print("n=== Timedelta-Attribute ===")
td = pd.Timedelta('3 days 12 hours 30 minutes 45 seconds')
print(f"Zeitdifferenz: {td}")
print(f"Tage insgesamt: {td.days}")
print(f"Sekunden insgesamt: {td.seconds}")
print(f"Mikrosekunden insgesamt: {td.microseconds}")
print(f"Gesamte Sekunden (einschließlich Dezimalteil): {td.total_seconds()}")
print(f"In Stunden umgerechnet: {td.total_seconds() / 3600}")
Ausgabe:
=== 字符串创建时间差 ===
pd.Timedelta('1 days'): 1 days, 0:00:00
pd.Timedelta('2 hours 30 minutes'): 0 days, 2:30:00
pd.Timedelta('1 days 02:30:45'): 1 days 02:30:45
pd.Timedelta('2 weeks'): 14 days, 0:00:00
=== 关键字参数创建 ===
pd.Timedelta(days=5, hours=10, minutes=30): 5 days 10:30:00
pd.Timedelta(hours=1.5): 0 days, 01:30:00
=== 数值和单位创建 ===
pd.Timedelta(10, unit='D'): 10 days, 0:00:00
pd.Timedelta(30, unit='m'): 0 days, 0:30:00
=== 从 datetime.timedelta 转换 ===
从 datetime.timedelta: 3 days 06:00:00
=== Timedelta 属性 ===
时间差: 3 days 12:30:45
总天数: 3
总秒数: 45045
总微秒数: 45000
总秒数 (含小数): 303045.0
84.17916666666667
Code-Erklärung:
pd.Timedelta()Es werden mehrere Erstellungsmethoden unterstützt: Zeichenkette, Schlüsselwortargumente, numerisch + Einheit, datetime.timedelta.- Das Zeichenkettenformat ist sehr flexibel und unterstützt '1 days', '2 weeks', '1 days 02:30:45' usw.
total_seconds()Die Methode gibt die Gesamtzahl der Sekunden zurück (einschließlich des Dezimalteils).
Beispiel 2: Zeitdelta-Operationen
Beispiele
import numpy as np
# 1. Zeitstempel und Zeitdelta addieren/subtrahieren
print("=== Zeitstempel- und Zeitdelta-Operationen ===")
ts = pd.Timestamp('2023-01-01 12:00:00')
td = pd.Timedelta(days=5, hours=3)
print(f"Zeitstempel: {ts}")
print(f"Zeitdifferenz: {td}")
print(f"ts + td: {ts + td}")
print(f"ts - td: {ts - td}")
# 2. Zwei Zeitstempel subtrahieren, um die Zeitdifferenz zu erhalten
print("n=== Zwei Zeitstempel subtrahieren ===")
ts1 = pd.Timestamp('2023-01-15 18:00:00')
ts2 = pd.Timestamp('2023-01-10 09:00:00')
tdiff = ts1 - ts2
print(f"ts1: {ts1}")
print(f"ts2: {ts2}")
print(f"ts1 - ts2: {tdiff}")
print(f"Differenz in Tagen: {tdiff.days}")
print(f"Differenz in Stunden: {tdiff.total_seconds() / 3600}")
# 3. Operationen zwischen Zeitdifferenzen
print("n=== Operationen zwischen Zeitdifferenzen ===")
td1 = pd.Timedelta(days=2)
td2 = pd.Timedelta(hours=12)
print(f"td1: {td1}")
print(f"td2: {td2}")
print(f"td1 + td2: {td1 + td2}")
print(f"td1 - td2: {td1 - td2}")
print(f"td1 * 2: {td1 * 2}")
print(f"td1 / 2: {td1 / 2}")
# 4. Operationen zwischen Zeitdifferenz und numerischem Wert
print("n=== Zeitdifferenz und numerische Operationen ===")
td = pd.Timedelta(hours=10)
print(f"10 hours * 3 = {td * 3}")
print(f"10 Stunden / 2 = {td / 2}")
print(f"10 Stunden // 3 = {td // 3}")
Ausgabe:
=== 时间戳与时间差运算 === 时间戳: 2023-01-01 12:00:00 时间差: 5 days 03:00:00 ts + td: 2023-01-06 15:00:00 ts - td: 2022-12-27 09:00:00 === 两个时间戳相减 === ts1: 2023-01-15 18:00:00 ts2: 2023-01-10 09:00:00 ts1 - ts2: 5 days 09:00:00 天数差: 5 小时差: 129.0 === 时间差之间的运算 === td1: 2 days, 0:00:00 td2: 12:00:00 td1 + td2: 2 days 12:00:00 td1 - td2: 1 day, 12:00:00 td1 * 2: 4 days, 0:00:00 td1 / 2: 1 day, 0:00:00 === 时间差与数值运算 === 10小时 * 3 = 1 day, 3:00:00 10小时 / 2 = 5:00:00 10小时 // 3 = 3:20:00
Code-Erklärung:
- Das Addieren eines Zeitdeltas zu einem Zeitstempel ergibt einen neuen Zeitstempel.
- Das Subtrahieren zweier Zeitstempel ergibt ein Zeitdelta.
- Zeitdeltas können zueinander addiert und voneinander subtrahiert werden.
- Zeitdeltas können mit numerischen Werten multipliziert und dividiert werden.
Beispiel 3: Verwenden von Zeitdelta in DataFrame
Beispiele
import numpy as np
# 1. Erstelle einen DataFrame mit Zeitdelta
print("=== Analyse der Auftragsbearbeitungszeit ===")
# Auftragsdaten simulieren
df = pd.DataFrame({
'order_id': ['A001', 'A002', 'A003', 'A004', 'A005'],
'order_time': pd.date_range('2023-01-01 09:00', periods=5, freq='2H'),
'process_time_min': [30, 45, 60, 20, 90]
})
# Bearbeitungszeit in Timedelta umwandeln
df['process_timedelta'] = pd.to_timedelta(df['process_time_min'], unit='m')
# Fertigstellungszeit berechnen
df['complete_time'] = df['order_time'] + df['process_timedelta']
print(df)
# 2. Statistiken zur Auftragsbearbeitungsdauer berechnen
print("n=== Statistiken zur Bearbeitungsdauer ===")
total_time = df['process_timedelta'].sum()
avg_time = df['process_timedelta'].mean()
print(f"Gesamte Bearbeitungszeit: {total_time}")
print(f"Durchschnittliche Bearbeitungszeit: {avg_time}")
# 3. Fälligkeitszeit berechnen
print("n=== Fälligkeitszeit berechnen (angenommen, die Bestellung muss innerhalb von 24 Stunden abgeschlossen sein) ===")
deadline = pd.Timedelta(hours=24)
df['deadline'] = df['order_time'] + deadline
df['is_ontime'] = df['complete_time'] <= df['deadline']
print(df[['order_id', 'order_time', 'complete_time', 'deadline', 'is_ontime']])
# 4. Überfällige Bestellungen filtern
print("n===Überfällige Bestellungen===")
late_orders = df[~df['is_ontime']]
print(f"Anzahl überfälliger Bestellungen:{len(late_orders)}")
print(late_orders[['order_id', 'complete_time', 'deadline']])
Ausgabe:
=== 订单处理时间分析 ===
order_id order_time process_time_min complete_time
0 A001 2023-01-01 09:00:00 30 2023-01-01 09:30:00
1 A002 2023-01-01 11:00:00 45 2023-01-01 11:45:00
2 A003 2023-01-01 13:00:00 60 2023-01-01 14:00:00
3 A004 2023-01-01 15:00:00 20 2023-01-01 15:20:00
4 A005 2023-01-01 17:00:00 90 2023-01-01 18:30:00
=== 处理时长统计 ===
总处理时间: 0 days 04:05:00
平均处理时间: 0 days 00:49:00
=== 计算到期时间(假设订单需要在24小时内完成)===
order_id order_time complete_time deadline is_ontime
0 A001 2023-01-01 09:00:00 2023-01-01 09:30:00 2023-01-02 09:00:00 True
1 A002 2023-01-01 11:00:00 2023-01-01 11:45:00 2023-01-02 11:00:00 True
2 A003 2023-01-01 13:00:00 2023-01-01 14:00:00 2023-02-01 13:00:00 True
3 A004 2023-01-01 15:00:00 2023-01-01 15:20:00 2023-02-01 15:00:00 True
4 A005 2023-01-01 17:00:00 2023-01-01 18:30:00 2023-02-01 17:00:00 True
=== 超时订单 ===
超时订单数: 0
Code-Erklärung:
pd.to_timedelta()Numerische Werte können in Timedelta umgewandelt werden.- Zeitdifferenzen können bequem zu Zeitstempeln addiert oder von ihnen subtrahiert werden.
- Statistiken wie die Gesamtverarbeitungszeit und die durchschnittliche Verarbeitungszeit können bequem berechnet werden.
Hinweise
Wichtige Hinweise:
pd.TimedeltaEs speichert Zeitintervalle, keine bestimmten Zeitpunkte.- Zeitdifferenzen können positiv (Zukunft) oder negativ (Vergangenheit) sein.
- und
pd.NaTÄhnlich gibt espd.NaTwas eine fehlende Zeitdifferenz darstellt.- Bei Verwendung der
unitParameter, stellen Sie sicher, dass der numerische Typ korrekt ist.
Andere Erweiterungen
Pandas Häufige Funktionen