Heim  >  Artikel  >  Backend-Entwicklung  >  Wie teile ich eine Zelle in einem Pandas-Datenrahmen basierend auf durch Kommas getrennten Werten in mehrere Zeilen auf?

Wie teile ich eine Zelle in einem Pandas-Datenrahmen basierend auf durch Kommas getrennten Werten in mehrere Zeilen auf?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-28 06:41:30660Durchsuche

How to Split a Cell into Multiple Rows in a Pandas Dataframe Based on Comma-Separated Values?

Zelle im Pandas-Datenrahmen in mehrere Zeilen aufteilen

Problem:

Sie haben einen Pandas Datenrahmen mit Bestelldaten, wobei jede Bestellung mehrere Pakete enthält, die als durch Kommas getrennte Zeichenfolgen in den Spalten „Paket“ und „Paketcode“ gespeichert sind. Ihr Ziel ist es, die Paketdaten aufzuteilen und für jedes Paket eine neue Zeile mit den entsprechenden Bestelldetails zu erstellen.

Lösung:

Für Pandas-Versionen >= 0,25:

<code class="python">df.set_index(['order_id', 'order_date']) \
    .apply(lambda x: x.str.split(',').explode()) \
    .reset_index()</code>

Für Pandas-Versionen <= 0,24:

<code class="python">df.set_index(['order_date', 'order_id']) \
    .stack() \
    .str.split(',', expand=True) \
    .stack() \
    .unstack(-2) \
    .reset_index(-1, drop=True) \
    .reset_index()

Erklärung:

1. Index festlegen: Legen Sie die Spalten, die intakt bleiben sollen („order_id“ und „order_date“), als Index des Datenrahmens fest.

2. Teilen und stapeln:

  • Für Pandas >= 0,25: Verwenden Sie apply(lambda x: x.str.split(',').explode()), um das Komma getrennt zu teilen 'package' und 'package_code' Spalten und erweitern Sie sie in mehrere Zeilen.
  • Für Pandas <= 0.24: Verwenden Sie erneut stack(), str.split() und stack(), um die Daten aufzuteilen und zu stapeln .
  • 3. Index entstapeln und zurücksetzen:

    • Auf der vorletzten Ebene (-2) entstapeln, um neue Spalten für die geteilten Paket- und Paketcodedaten zu erstellen.
    • Index zurücksetzen auf Machen Sie die Indexänderung rückgängig und erhalten Sie den endgültigen Datenrahmen.

    Das obige ist der detaillierte Inhalt vonWie teile ich eine Zelle in einem Pandas-Datenrahmen basierend auf durch Kommas getrennten Werten in mehrere Zeilen auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn