None
Nachrichten

pandas 3 erschienen

by Viktor Garske on Jan. 31, 2026, 11:40 p.m.

Kurz notiert: Die Data-Science-Bibliothek pandas wurde in Version 3.0 veröffentlicht. Auch wenn ein drittes Major-Release erst einmal nach tiefgreifenden Änderungen klingt, ist es tatsächlich nur die SemVer-Versioierung, die für den Major-Release verantwortlich ist, da pandas 3.0 auch ältere Features entfernt, die zuvor deprecated wurden. An sich bleiben natürlich die Grundkonzepte gleich.

Neuerungen

Das pandas-Team hebt drei Neuerungen hervor:

Automatischer String-Typ für Spalten

Wird ein DataFrame erzeugt, ermittelt pandas in vielen Fällen den Datentyp für die Spalte. Wenn z. B. nur Ganzzahlen enthalten sind, ist der Datentyp int. Bei Strings war dies bisher nicht so, wie wurden als der generische Datentyp object aufgelöst und mussten manuell typisiert werden.

Das wird mit pandas 3.0 gelöst, denn String-Spalten erhalten nun automatisch den Typ str. Für diese Umstellung wird ein Migration-Guide bereitgestellt.

Verbesserungen bei Copy-on-Write

Unter Python gibt es eigentlich keine Pointer, womit man sich eigentlich einige Probleme erspart. Trotzdem kann es Referenzen geben, die wie Pointer wirken. Ein Beispiel aus dem Guide:

df = pd.DataFrame({"foo": [1, 2, 3], "bar": [4, 5, 6]})
subset = df["foo"]
subset.iloc[0] = 100

Aus der 1 in "foo" wurde kurzerhand 100, auch wenn nicht der DataFrame direkt geändert werden musste. Das Verhalten wird schwer vorhersehbar, wenn mit vielen DataFrames auf einmal gearbeitet wird.

Wer eine tatsächliche Kopie anlegen will, muss bisher z. B. subset = df["foo"].copy() aufrufen. Dann wird der DataFrame kopiert und Änderungen an subset landen nicht mehr auf einmal im ursprünglichen DataFrame.

Dieses Verhalten ist nun das Standardverhalten, ein expliziter .copy()-Aufruf wird nicht mehr benötigt. Das erfordert zwar einiges Umdenken hinsichtlich der Änderung von Werten, erspart aber auch einige SettingWithCopyWarnings, die schon in früheren Releases bei bestimmten Spaltenoperationen auftraten. Copy-on-Write bedeutet dabei in der Umsetzung, dass der DataFrame erst einmal weiterhin Referenzen nutzt, aber bei der ersten Veränderung einer Referenz den DataFrame kopiert und nur in der Kopie die Veränderung hinterlegt. Alles zu Copy-on-Write ist hier zu finden.

pd.col()-Support

Pandas steht zunehmend im Wettbewerb zu Polars. Da ist es nicht verwunderlich, dass einige bewährte Features auch bei Pandas Einzug halten.

Neu ist ab pandas 3.0 die Funktion pd.col(). Während bisher bei df.assign()-Operationen auf Lambda-Ausdrücke zurückgegriffen werden musste, geht dies nun einfacher mit der col()-Funktion:

df.assign(c=lambda df: df['a'] + df['b']) # vor 3.0
df.assign(c=pd.col('a') + pd.col('b')) # 3.0

Breaking Changes

Hier eine Auswahl der Breaking Changes:

  • Datetime-Auflösung: Standard ist jetzt Mikrosekunden statt Nanosekunden. Integer-Casts lieffern dadurch jetzt andere Werte.
  • Bei concat und homogenen DatetimeIndex-Objekten wird jetzt sort=False berücksichtigt.
  • value_count(sort=False) behält jetzt die Eingabereihenfolge, nicht mehr Sortierung nach Labels.
  • offsets.Day ist jetzt immer ein Kalendertag, kein fixer 24h-Tick. Dabei werden Zeitumstellungen explizit berücksichtigt.
  • NaN vs. NA: In nullable Dtypes werden NaN und NA standardmäßig nun gleich behandelt, Arithmetik erzeugt jetzt NA
  • Die Mindestanforderungen steigen auf Python >= 3.11 und NumPy >= 1.26.
  • pytz ist von nun an optional.

Darüber hinaus gibt es diverse kleine Änderungen, z. B. werden einige Rückgabewerte bei inplace=True verändert.

Weitere Informationen

Das gesamte Changelog ist hier abrufbar. Es wird aufgrund der Deprecations empfohlen, erst auf Pandas 2.3 upgraden, den Code auf Warnings zu überprüfen und erst dann mit dem Upgrade auf Version 3.0 fortzufahren.

Tags:
Author image
Viktor Garske

Viktor Garske ist der Hauptautor des Blogs und schreibt gerne über Technologie, Panorama sowie Tipps & Tricks.

Comments (0)