Maison >développement back-end >Tutoriel Python >Comment puis-je créer un Pandas DataFrame à partir d'un fichier texte avec une structure spécifique qui inclut des modèles d'état et de région ?

Comment puis-je créer un Pandas DataFrame à partir d'un fichier texte avec une structure spécifique qui inclut des modèles d'état et de région ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-03 03:05:02674parcourir

How can I create a Pandas DataFrame from a text file with a specific structure that includes state and region patterns?

Lecture et mise en forme du DataFrame Pandas à partir d'un fichier texte avec des modèles d'état et de région

La création d'un DataFrame Pandas à partir d'un fichier texte avec une structure spécifique nécessite une manipulation stratégique des données. Examinons le problème et explorons une solution pour transformer le texte fourni en DataFrame souhaité.

Structure des données

Le fichier texte suit une structure hiérarchique où :

  • Les lignes avec "[modifier]" sont des noms d'état.
  • Les lignes avec "[numéro]" sont des noms de région.
  • Les noms de région doivent être répétés pour le même état.

Solution

1. Lecture du fichier texte

Tout d'abord, lisez le fichier texte et créez un DataFrame à l'aide de read_csv(). Puisqu'il n'y a pas de délimiteurs spécifiques, spécifiez un séparateur personnalisé qui n'existe pas dans les données, comme un point-virgule :

<code class="python">df = pd.read_csv('filename.txt', sep=";", names=['Region Name'])</code>

2. Extraction des noms d'état

Identifiez les lignes contenant les noms d'état à l'aide de la méthode str.extract() et des expressions régulières pour capturer le nom de l'état jusqu'à "[edit]". Créez une nouvelle colonne appelée « État » avec ces valeurs :

<code class="python">df.insert(0, 'State', df['Region Name'].str.extract('(.*)\[edit\]', expand=False).ffill())</code>

3. Suppression des informations entre crochets des noms de région

Supprimez les crochets et tous les caractères qu'ils contiennent de la colonne « Nom de la région » :

<code class="python">df['Region Name'] = df['Region Name'].str.replace(r' \(.+$', '')</code>

4. Suppression des lignes d'en-tête d'état

Supprimez les lignes où "[edit]" apparaît dans la colonne "Nom de la région". Créez un masque en utilisant str.contains() :

<code class="python">df = df[~df['Region Name'].str.contains('\[edit\]')].reset_index(drop=True)</code>

5. DataFrame final

À ce stade, vous disposez d'un DataFrame avec les colonnes « État » et « Nom de la région », comme requis.

<code class="python">print(df)</code>

Solution étendue

Si vous préférez inclure le texte entre crochets dans la colonne « Nom de la région », voici une solution modifiée :

<code class="python">df.insert(0, 'State', df['Region Name'].str.extract('(.*)\[edit\]', expand=False).ffill())
df = df[~df['Region Name'].str.contains('\[edit\]')].reset_index(drop=True)

print(df)</code>

Cela produira un DataFrame avec les colonnes « État » et « Nom de la région », où les noms de région incluent le texte entre crochets.

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