Explodierende listenartige Spalten: Ein Leitfaden zum Erweitern von Datenrahmen
Problem:
In In Pandas-Datenrahmen können einige Zellen Listen mit mehreren Werten enthalten. Das Ziel besteht darin, den Datenrahmen so zu transformieren, dass jedes Listenelement eine separate Zeile einnimmt, während die Werte in anderen Spalten erhalten bleiben.
Lösung:
Methode 1: repeat()
Vor Pandas 0.25 wurde die Methode „repeat()“ üblicherweise zum Auflösen von Listen verwendet Spalten:
import pandas as pd import numpy as np df = pd.DataFrame( {'trial_num': [1, 2, 3, 1, 2, 3], 'subject': [1, 1, 1, 2, 2, 2], 'samples': [list(np.random.randn(3).round(2)) for i in range(6)] } ) # Expand 'samples' column into separate rows using repeat() df_exploded = df.assign( samples=df['samples'].str.join(',').str.split(',') ).explode('samples') df_exploded = df_exploded.reset_index(drop=True) # Add sample_num column to track list element order df_exploded['sample_num'] = df_exploded.groupby('trial_num').cumcount()
Methode 2: explosion() (Pandas >= 0.25)
Mit der Veröffentlichung von Pandas 0.25 stellt die Methode .explode() bereit eine elegante Lösung:
df.explode('samples').reset_index(drop=True)
Diese Methode verarbeitet automatisch leere Listen und behält NaNs bei, um sicherzustellen, dass a umfassende Konvertierung.
Hinweis:
Das obige ist der detaillierte Inhalt vonWie kann man listenartige Spalten in Pandas DataFrames effektiv auflösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!