Colonne de listes Pandas : création d'une ligne pour chaque élément de liste
Dans les dataframes Pandas, il peut être nécessaire de convertir une colonne contenant des listes en plusieurs lignes, où chaque élément de la liste occupe sa propre ligne. Pour y parvenir, il existe deux options viables.
Méthode d'explosion intégrée de Pandas>=0.25
Pour les versions Pandas 0.25 et ultérieures, le .explode( ) a été introduite spécifiquement à cet effet. Elle convertit efficacement les listes en lignes individuelles.
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)] }) df.explode('samples').reset_index(drop=True) # Resetting the index for clarity
Cette méthode gère les colonnes mixtes contenant des listes et des scalaires, ainsi que des listes vides et des NaN. Cependant, il est important de noter que l'explosion fonctionne sur une seule colonne à la fois.
Fonction personnalisée pour Pandas <0,25
Pour les versions antérieures de Pandas, un une fonction personnalisée peut être utilisée :
def explode_list_column(df, column): # Create an empty list to store the expanded rows exploded_rows = [] # Iterate through each cell in the specified column for row in df[column]: # Iterate through each element in the list for element in row: # Add a new row to the list, copying data from the current row and adding the new element exploded_rows.append(list(row) + [element]) # Convert the expanded rows into a DataFrame return pd.DataFrame(exploded_rows, columns=df.columns + ['list_element'])
Cette fonction prend un DataFrame et le nom de la colonne contenant les listes comme paramètres, et elle renvoie un nouveau DataFrame avec une colonne pour chaque élément de la liste.
# Applying the exploding function exploded_df = explode_list_column(df, 'samples')
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!