Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich eine durch Kommas getrennte Zelle in einem Pandas DataFrame in mehrere Zeilen aufteilen?

Wie kann ich eine durch Kommas getrennte Zelle in einem Pandas DataFrame in mehrere Zeilen aufteilen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-03 05:05:03568Durchsuche

How can I split a comma-separated cell into multiple rows in a Pandas DataFrame?

Aufteilen einer Zelle in mehrere Zeilen in einem Pandas-Datenrahmen

Pandas bietet umfassende Tools zur Datenbearbeitung, einschließlich der Möglichkeit, eine Zelle zu teilen, die mehrere durch Kommas getrennte Werte enthält in mehrere Reihen aufteilen. In diesem Leitfaden werden wir Methoden untersuchen, um dies zu erreichen, indem wir zwei verschiedene Ansätze verwenden, die auf der Pandas-Version basieren.

pandas >= 0,25

Für Pandas-Versionen 0,25 und höher können Sie eine Kombination verwenden von apply, str.split und Series.explode, um das gewünschte Ergebnis zu erzielen. Hier ist der Codeausschnitt:

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

Erklärung:

  1. set_index(['order_id', 'order_date']): Legt die Spalten order_id und order_date fest als Index, um sie bei nachfolgenden Vorgängen beizubehalten.
  2. apply(lambda x: x.str.split(',').explode()): Wendet eine Lambda-Funktion auf jede Zeile an. Es teilt die Zellwerte (Paket und Paketcode) anhand des Komma-Trennzeichens auf und explodiert die resultierenden Listen in mehrere Zeilen.
  3. reset_index(): Setzt den Index zurück, um einen neuen DataFrame mit den explodierten Werten als separate Zeilen zu erstellen.

pandas <= 0.24

Für Pandas-Versionen 0.24 und niedriger ist ein komplexerer Ansatz mit Stack, Unstack und Str.Split erforderlich:

<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()
)</code>

Erklärung:

  1. Ähnlich wie beim vorherigen Ansatz legt set_index order_date und order_id als Index fest.
  2. stack() kollabiert die Zeilen und stapelt sie als einzelne Spalte.
  3. str.split(',', expand=True) teilt die kombinierten Werte basierend auf dem Komma-Trennzeichen in mehrere Spalten auf.
  4. stack() stapelt die Spalten, um eine einzelne zu erstellen Spalte erneut.
  5. unstack(-2) entstapelt den DataFrame auf der vorletzten Ebene, um Zeilen zu erstellen, die die geteilten Werte enthalten.
  6. reset_index(-1, drop=True) entfernt die zusätzliche Ebene des Index.
  7. reset_index() fügt einen neuen Index hinzu, um einen neuen DataFrame zu erstellen.

Beide Methoden geben einen neuen DataFrame mit den aufgelösten Werten als separate Zeilen zurück, wie in dargestellt die gewünschte Ausgabe, die Sie bereitgestellt haben.

Das obige ist der detaillierte Inhalt vonWie kann ich eine durch Kommas getrennte Zelle in einem Pandas DataFrame in mehrere Zeilen aufteilen?. 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