Maison >développement back-end >Tutoriel Python >Comment diviser une colonne de chaîne Pandas DataFrame en deux colonnes ?
Comment diviser une colonne de chaîne de dataframe en deux colonnes ?
Lorsque vous travaillez avec des données tabulaires, il est souvent nécessaire de manipuler les données à extraire des informations précises. Une tâche courante consiste à diviser une seule colonne de valeurs de chaîne en plusieurs colonnes, chacune contenant une partie de la chaîne d'origine.
Problème et exigence
Supposons que nous ayons un DataFrame nommé df avec une colonne appelée ligne qui contient des valeurs de chaîne au format suivant :
row 0 00000 UNITED STATES 1 01000 ALABAMA 2 01001 Autauga County, AL 3 01003 Baldwin County, AL 4 01005 Barbour County, AL
Notre objectif est de diviser la colonne ligne en deux nouvelles colonnes : fips et row, où fips contient les cinq premiers caractères de chaque chaîne et row contient les caractères restants.
Solution utilisant str.split()
Une La façon de diviser la colonne de ligne consiste à utiliser la méthode str.split(). Cette méthode prend une expression régulière comme argument et divise la chaîne en fonction du modèle spécifié par l'expression régulière. Dans notre cas, nous pouvons utiliser l'expression régulière suivante :
r'(\d{5}) +'
Cette expression régulière correspondra à une séquence de cinq chiffres suivis d'un ou plusieurs espaces. Nous pouvons ensuite utiliser la méthode str.split() pour diviser la colonne de ligne à l'aide de cette expression régulière et attribuer les listes résultantes aux colonnes fips et ligne comme suit :
import pandas as pd # Split the 'row' column into 'fips' and 'row' columns df[['fips', 'row']] = df['row'].str.split(r'(\d{5}) +', n=1, expand=True)
Le paramètre expand=True est utilisé pour spécifier que la méthode str.split() doit renvoyer un DataFrame avec plusieurs colonnes, plutôt qu'une série de listes.
Résultat
Après avoir exécuté le code ci-dessus, notre DataFrame df ressemblera à ceci :
fips row 0 00000 UNITED STATES 1 01000 ALABAMA 2 01001 Autauga County, AL 3 01003 Baldwin County, AL 4 01005 Barbour County, AL
Solution alternative utilisant str.extract()
Une autre façon de diviser la colonne de ligne consiste à utiliser le Méthode str.extract(). Cette méthode prend une expression régulière comme argument et renvoie un DataFrame contenant les correspondances de l’expression régulière. Dans notre cas, nous pouvons utiliser l'expression régulière suivante :
r'(\d{5}) +\D+'
Cette expression régulière correspondra à une séquence de cinq chiffres suivis d'un ou plusieurs non-chiffres. Nous pouvons ensuite utiliser la méthode str.extract() pour extraire les correspondances de cette expression régulière et attribuer le DataFrame résultant aux colonnes fips et row comme suit :
import pandas as pd # Split the 'row' column into 'fips' and 'row' columns df[['fips', 'row']] = df['row'].str.extract(r'(\d{5}) +\D+')
Result
Après avoir exécuté le code ci-dessus, notre DataFrame df ressemblera à ceci :
fips row 0 00000 UNITED STATES 1 01000 ALABAMA 2 01001 Autauga County, AL 3 01003 Baldwin County, AL 4 01005 Barbour County, AL
Les deux Les solutions ci-dessus obtiendront le résultat souhaité, en divisant la colonne de lignes en fips et en colonnes de lignes. La solution str.split() est plus flexible et peut être utilisée pour diviser la colonne en fonction de n'importe quelle expression régulière, tandis que la solution str.extract() est plus simple et plus facile à comprendre.
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!