Maison >développement back-end >Tutoriel Python >Comment créer un Pandas DataFrame à partir d'un fichier texte avec des modèles spécifiques, où les états sont indiqués par \'[edit]\' et les régions par \'[number]\' ?

Comment créer un Pandas DataFrame à partir d'un fichier texte avec des modèles spécifiques, où les états sont indiqués par \'[edit]\' et les régions par \'[number]\' ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-02 07:03:29252parcourir

How do you create a Pandas DataFrame from a text file with specific patterns, where states are indicated by

Création d'un DataFrame Pandas à partir d'un fichier texte avec des modèles spécifiques

Énoncé du problème :

L'objectif est de créer un Pandas DataFrame à partir d'un fichier texte qui a la structure suivante :

Alabama[edit]
Auburn (Auburn University)[1]
Florence (University of North Alabama)
Jacksonville (Jacksonville State University)[2]
Livingston (University of West Alabama)[2]
Montevallo (University of Montevallo)[2]
Troy (Troy University)[2]
Tuscaloosa (University of Alabama, Stillman College, Shelton State)[3][4]
Tuskegee (Tuskegee University)[5]
Alaska[edit]
Fairbanks (University of Alaska Fairbanks)[2]
Arizona[edit]
Flagstaff (Northern Arizona University)[6]
Tempe (Arizona State University)
Tucson (University of Arizona)
Arkansas[edit]

Où les lignes avec "[edit]" indiquent les états et les lignes avec "[number]" indiquent les régions. Le DataFrame doit diviser les données en fonction de ces modèles et répéter le nom de l'état pour chaque nom de région.

Solution :

Pour y parvenir, nous pouvons suivre les étapes ci-dessous :

  1. Utilisez pandas pour lire le fichier texte en tant que DataFrame, en utilisant un point-virgule comme séparateur et en créant une colonne nommée "Nom de la région":
df = pd.read_csv('filename.txt', sep=";", names=['Region Name'])
  1. Insérez une nouvelle colonne nommée « State » en utilisant la méthode d'extraction de chaîne pour extraire le nom de l'état des lignes contenant « [edit] ». Nous remplissons ensuite les valeurs manquantes à l'aide de forward fill (ffill) :
df.insert(0, 'State', df['Region Name'].str.extract('(.*)\[edit\]', expand=False).ffill())
  1. Remplacez tout texte entre parenthèses par une chaîne vide dans la colonne "Nom de la région" pour supprimer les caractéristiques du nom de la région. :
df['Region Name'] = df['Region Name'].str.replace(r' \(.+$', '')
  1. Supprimez les lignes contenant "[edit]" à l'aide de l'indexation booléenne et de la fonction str.contains. Le DataFrame résultant contient les données souhaitées :
df = df[~df['Region Name'].str.contains('\[edit\]')].reset_index(drop=True)
print (df)

Exemple de sortie :

Le DataFrame de sortie ressemblera à ceci :

      State   Region Name
0   Alabama        Auburn
1   Alabama      Florence
2   Alabama  Jacksonville
3   Alabama    Livingston
4   Alabama    Montevallo
5   Alabama          Troy
6   Alabama    Tuscaloosa
7   Alabama      Tuskegee
8    Alaska     Fairbanks
9   Arizona     Flagstaff
10  Arizona         Tempe
11  Arizona        Tucson

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!

Déclaration:
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