Maison > développement back-end > Tutoriel Python > Comment puis-je transformer une colonne de listes Pandas en plusieurs lignes ?

Comment puis-je transformer une colonne de listes Pandas en plusieurs lignes ?

Susan Sarandon
Libérer: 2024-11-27 07:49:09
original
1020 Les gens l'ont consulté

How Can I Transform a Pandas Column of Lists into Multiple Rows?

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
Copier après la connexion

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'])
Copier après la connexion

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')
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal