[Introduction à Python] Comment supprimer des lignes qui remplissent plusieurs conditions dans Pandas.DataFrame

Bonjour.

Récemment, je touche aussi ** Python **.

Désormais, afin d'améliorer l'efficacité des opérations internes, nous essayons d'automatiser le processus d'application de paiement que la comptabilité effectue manuellement à l'aide d'Excel et de Csv en utilisant ** Python **.

J'utilise ** openpyxl ** pour les opérations Excel et ** pandas ** pour le traitement des données, mais je suis toujours aux prises avec des ** pandas **, et si c'est ** C # **, le code sera tué instantanément. J'ai également du mal avec le processus d'assemblage.

J'écrirai une telle lutte au lieu d'un mémo.

Cliquez ici pour lire ce mémo.

Comment supprimer des lignes qui remplissent plusieurs conditions dans Pandas.DataFrame

Il y a peut-être un tsukkomi qui dit: "C'est aussi simple que ça!", Mais j'ai essayé diverses choses, alors je vais en prendre note.

Quand j'ai cherché comment supprimer une ligne dans un DataFrame, j'ai trouvé une fonction appelée ** drop **. [Officiel] pandas.DataFrame.drop

L'utilisation est la suivante. Spécifiez le numéro d'index du DataFrame et supprimez-le.

import pandas as pd

#Lire le fichier Excel
data_frame = pd.read_excel('{Chemin du fichier Excel}', sheet_name='{Nom de la feuille}', header=0)

#10e ligne(Index=9)Supprimer
data_frame.drop(9)
#6ème ligne(Index=5)Et la ligne 8(Index=7)Supprimer
data_frame.drop([5,7])
#2e ligne(Index=1)5ème ligne à partir de(Index=4)Supprimer
data_frame.drop(range(1,4))

Cette fois, comme son titre l'indique, "** Supprimez les données dont le partenaire commence par XX et la description commence par △△ **" et supprimez les lignes qui remplissent plusieurs conditions.

Pour cela, il est nécessaire d'obtenir le numéro d'index qui satisfait aux conditions.

Quand j'ai cherché comment obtenir le numéro d'index d'un DataFrame, j'ai trouvé une fonction appelée ** index **. [Officiel] pandas.DataFrame.index

L'utilisation est la suivante.

#Obtenir un index qui correspond à la condition
drop_index = data_frame.index[data_frame['Fournisseurs'] == '〇〇']
#Supprimer l'index qui correspond à la condition
data_frame = data_frame.drop(drop_index)

Ouais, j'ai pu supprimer correctement les données de "** Les clients sont 〇〇 **". Ensuite, augmentons les conditions.

#Obtenir un index qui correspond à plusieurs conditions
drop_index = data_frame.index[(data_frame['Fournisseurs'] == '〇〇') & (data_frame['La description'] == '△△*****')]
#Supprimer l'index qui correspond à la condition
data_frame = data_frame.drop(drop_index)

Très bien, les données des deux conditions peuvent être supprimées!  : Hmm? J'ai oublié quelque chose ... La deuxième condition était une correspondance de préfixe ... Je ne sais pas ...

Pour le moment, essayez la correspondance du préfixe ** commence par **.

#Essayez la correspondance de préfixe avec commence par DataFrame ...
drop_index = data_frame.index[(data_frame['Fournisseurs'] == '〇〇') & (data_frame['La description'].startswith('△△'))]

【résultat】
Error:'Series' object has no attribute 'startswith'

«** La série ** n'a pas ** commence par **!» Était en colère.

Pandas a un accesseur (méthode d'accès) qui peut traiter des chaînes appelées ** str **, et a également une fonction ** startswith ** qui peut être extraite par correspondance de préfixe. [Officiel] pandas.Series.str.startswith

Essayez-le avec ** str.startswith **.

#Ajout d'une condition de correspondance de préfixe avec startwith de l'accesseur str de DataFrame
drop_index = data_frame.index[(data_frame['Fournisseurs'] == '〇〇') & (data_frame['La description'].str.startswith('△△'))]
#Supprimer l'index qui correspond à la condition
data_frame = data_frame.drop(drop_index)

bien joué! J'ai pu supprimer correctement les données de deux conditions!

Je voudrais dire: "C'est ça!" Au moment où nous sommes arrivés à la méthode ci-dessus, nous l'avons implémentée d'une manière différente.

#Boucle jusqu'au nombre maximum de lignes dans le DataFrame
for i in range(len(data_frame)):
     #Mandrin avec des valeurs de colonne et de ligne spécifiées
     if data_frame['Fournisseurs'][i] == '〇〇' and data_frame['La description'][i].startswith('△△'):
          #Supprimer le numéro d'index qui correspond à la condition
          data_frame = data_frame.drop(i)

C'est un peu analogique, mais cela parcourt le nombre de lignes de données et traite chacune d'elles. Cette méthode peut également supprimer correctement les données de deux conditions.

Il existe de nombreuses autres méthodes, mais cette fois j'ai présenté la méthode que j'ai réellement essayée. C'est tout.

La prochaine fois, je publierai où j'ai eu du mal avec ** openpyxl ** et ** pandas **.

Merci d'avoir lu jusqu'ici.

Recommended Posts

[Introduction à Python] Comment supprimer des lignes qui remplissent plusieurs conditions dans Pandas.DataFrame
[Introduction à Python] Comment utiliser la classe en Python?
Comment supprimer plusieurs positions (index) spécifiées dans une liste Python
Suppression des sommets qualifiants dans networkx
Comment écrire une concaténation de chaînes sur plusieurs lignes en Python
Comment récupérer plusieurs tableaux à l'aide de slice en python.
Extraire uniquement les éléments qui répondent à des conditions spécifiques en Python
Comment développer en Python
Comment tester cette exception est déclenchée dans python unittest
Comment découper un bloc de plusieurs tableaux à partir d'un multiple en Python
[Introduction à l'application Udemy Python3 +] 36. Utilisation de In et Not
Comment définir plusieurs variables dans une instruction Python for
[Python] Comment faire PCA avec Python
Comment collecter des images en Python
[Introduction à Python] Comment analyser JSON
[Python] Comment supprimer des lignes et des colonnes dans une table (liste des options de méthode de dépôt)
Comment utiliser Mysql avec python
Comment envelopper C en Python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Supprimer plusieurs éléments dans la liste python
Comment gérer le japonais avec Python
Comment déterminer qu'une clé croisée a été entrée dans Python3
[python] Déplacer les fichiers qui remplissent les conditions
Comment définir dynamiquement des variables en Python
Comment faire R chartr () en Python
Comment supprimer des sessions expirées dans Django
[Itertools.permutations] Comment créer une séquence en Python
Envoyer des e-mails à plusieurs destinataires avec Python (Python3)
Comment obtenir stacktrace en python
Comment afficher la table quatre-vingt-dix-neuf en python
Comment extraire une zone de polygone en Python
Comment vérifier la version d'opencv avec python
Comment changer de version de Python dans cloud9
Comment régler le contraste de l'image en Python
Comment utiliser __slots__ dans la classe Python
Comment remplir dynamiquement des zéros avec Python
Comment utiliser les expressions régulières en Python
Comment afficher Hello World en python
Comment utiliser is et == en Python
Comment écrire Ruby to_s en Python
Introduction aux vecteurs: Algèbre linéaire en Python <1>
Introduction à la vérification de l'efficacité Chapitre 1 écrit en Python
Comment écrire une chaîne de caractères lorsqu'il y a plusieurs lignes en python
Comment utiliser la bibliothèque C en Python
Comment recevoir des arguments de ligne de commande en Python
[REAPER] Comment jouer à Reascript avec Python
Comment effacer un taple dans une liste (Python)
[Introduction à l'application Udemy Python3 +] 23. Comment utiliser Tapuru
Comment générer une séquence en Python et C ++
Comment incorporer des variables dans des chaînes python
Comment prendre plusieurs arguments lors d'un traitement parallèle à l'aide du multitraitement en python
Introduction à la vérification de l'efficacité Chapitre 3 écrit en Python
Comment tracer plusieurs images ajustées côte à côte en utilisant Python
tse --Introduction à l'éditeur de flux de texte en Python
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment créer un fichier JSON en Python
[Python] Comment dessiner plusieurs graphiques avec Matplotlib
J'ai écrit "Introduction à la vérification des effets" en Python