Explosion de colonnes de type liste : guide pour étendre les cadres de données
Problème :
Dans Dataframes Pandas, certaines cellules peuvent contenir des listes de plusieurs valeurs. Le but est de transformer le dataframe pour que chaque élément de la liste occupe une ligne distincte, tout en préservant les valeurs dans les autres colonnes.
Solution :
Méthode 1 : répéter()
Avant Pandas 0.25, la méthode répéter() était couramment utilisée pour exploser la liste colonnes :
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()
Méthode 2 : exploser() (Pandas >= 0.25)
Avec la sortie de Pandas 0.25, la méthode .explode() fournit une solution élégante :
df.explode('samples').reset_index(drop=True)
Cette méthode gère automatiquement les listes vides et préserve les NaN, garantissant une conversion complète.
Remarque :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!