[Einführung in Python] So löschen Sie Zeilen, die mehrere Bedingungen in Pandas.DataFrame erfüllen

Hallo.

Kürzlich berühre ich auch ** Python **.

Um die Effizienz der internen Abläufe zu verbessern, versuchen wir nun, den Zahlungsanwendungsprozess zu automatisieren, den die Buchhaltung manuell mit Excel und CSV mit ** Python ** ausführt.

Ich verwende ** openpyxl ** für Excel-Operationen und ** Pandas ** für die Datenverarbeitung, aber ich habe immer noch Probleme mit ** Pandas **, und wenn es ** C # ** ist, wird der Code sofort getötet. Ich kämpfe auch mit dem Montageprozess.

Ich werde einen solchen Kampf anstelle eines Memos aufschreiben.

Klicken Sie hier für dieses Memo.

So löschen Sie Zeilen, die mehrere Bedingungen in Pandas.DataFrame erfüllen

Es mag einen Tsukkomi geben, der sagt: "So einfach ist das!", Aber ich habe verschiedene Dinge ausprobiert, also werde ich es mir notieren.

Als ich nachgeschlagen habe, wie eine Zeile in einem DataFrame gelöscht werden kann, habe ich eine Funktion namens ** drop ** gefunden. [Offiziell] pandas.DataFrame.drop

Die Verwendung ist wie folgt. Geben Sie die Indexnummer des DataFrame an und löschen Sie sie.

import pandas as pd

#Excel-Datei lesen
data_frame = pd.read_excel('{Excel-Dateipfad}', sheet_name='{Blattname}', header=0)

#10. Zeile(Index=9)Löschen
data_frame.drop(9)
#6. Zeile(Index=5)Und Zeile 8(Index=7)Löschen
data_frame.drop([5,7])
#2. Zeile(Index=1)5. Zeile von(Index=4)Löschen
data_frame.drop(range(1,4))

Diesmal, wie der Titel schon sagt, "** Daten löschen, deren Geschäftspartner mit XX beginnt und Beschreibung mit △△ ** beginnt" und Zeilen löschen, die mehrere Bedingungen erfüllen.

Zu diesem Zweck ist es erforderlich, die Indexnummer zu erhalten, die die Bedingungen erfüllt.

Als ich nachgeschlagen habe, wie man die Indexnummer eines DataFrame erhält, habe ich eine Funktion namens ** index ** gefunden. [Offiziell] pandas.DataFrame.index

Die Verwendung ist wie folgt.

#Holen Sie sich den Index, der der Bedingung entspricht
drop_index = data_frame.index[data_frame['Lieferanten'] == '〇〇']
#Index löschen, der der Bedingung entspricht
data_frame = data_frame.drop(drop_index)

Ja, ich konnte die Daten von "** Kunden sind 〇〇 **" ordnungsgemäß löschen. Als nächstes erhöhen wir die Bedingungen.

#Holen Sie sich einen Index, der mehreren Bedingungen entspricht
drop_index = data_frame.index[(data_frame['Lieferanten'] == '〇〇') & (data_frame['Beschreibung'] == '△△*****')]
#Index löschen, der der Bedingung entspricht
data_frame = data_frame.drop(drop_index)

Okay, die Daten der beiden Bedingungen können gelöscht werden!  : Hmm? Ich habe etwas vergessen ... Die zweite Bedingung war ein Präfix-Match ... Ich weiß nicht ...

Versuchen Sie vorerst, die Präfixübereinstimmung ** beginnt mit **.

#Versuchen Sie die Präfixübereinstimmung mit beginnt mit DataFrame ...
drop_index = data_frame.index[(data_frame['Lieferanten'] == '〇〇') & (data_frame['Beschreibung'].startswith('△△'))]

【Ergebnis】
Error:'Series' object has no attribute 'startswith'

"** Serie ** hat nicht ** beginnt mit **!" War wütend.

Pandas verfügt über einen Accessor (Zugriffsmethode), der Zeichenfolgen mit dem Namen ** str ** verarbeiten kann, sowie über eine ** startwith ** -Funktion, die durch Präfixübereinstimmung extrahiert werden kann. [Offiziell] pandas.Series.str.startswith

Versuchen Sie es mit ** str.startswith **.

#Präfix-Übereinstimmungsbedingung mit startwith des str-Accessors von DataFrame hinzugefügt
drop_index = data_frame.index[(data_frame['Lieferanten'] == '〇〇') & (data_frame['Beschreibung'].str.startswith('△△'))]
#Index löschen, der der Bedingung entspricht
data_frame = data_frame.drop(drop_index)

gut gemacht! Ich konnte die Daten von zwei Bedingungen richtig löschen!

Ich möchte sagen: "Das ist es!" Als wir zu der oben genannten Methode kamen, haben wir sie tatsächlich auf eine andere Weise implementiert.

#Schleife bis zur maximalen Anzahl von Zeilen im DataFrame
for i in range(len(data_frame)):
     #Spannfutter mit angegebenen Spalten- und Zeilenwerten
     if data_frame['Lieferanten'][i] == '〇〇' and data_frame['Beschreibung'][i].startswith('△△'):
          #Löschen Sie die Indexnummer, die der Bedingung entspricht
          data_frame = data_frame.drop(i)

Es ist ein bisschen analog, aber es durchläuft die Anzahl der Datenzeilen und verarbeitet jede einzelne. Diese Methode kann auch die Daten von zwei Bedingungen ordnungsgemäß löschen.

Es gibt viele andere Methoden, aber dieses Mal habe ich die Methode vorgestellt, die ich tatsächlich ausprobiert habe. Das ist es.

Nächstes Mal werde ich posten, wo ich mit ** openpyxl ** und ** pandas ** zu kämpfen habe.

Vielen Dank, dass Sie so weit gelesen haben.

Recommended Posts

[Einführung in Python] So löschen Sie Zeilen, die mehrere Bedingungen in Pandas.DataFrame erfüllen
[Einführung in Python] Wie verwende ich eine Klasse in Python?
So löschen Sie mehrere angegebene Positionen (Indizes) in einer Python-Liste
Löschen qualifizierender Eckpunkte in networkx
So schreiben Sie in Python die Verkettung von Zeichenfolgen in mehrere Zeilen
So rufen Sie mehrere Arrays mit Slice in Python ab.
Extrahieren Sie nur Elemente, die bestimmte Bedingungen in Python erfüllen
Wie man in Python entwickelt
So testen Sie, ob die Ausnahme in Python unittest ausgelöst wird
So schneiden Sie ein Block-Multiple-Array aus einem Multiple-Array in Python
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
So definieren Sie mehrere Variablen in einer Python for-Anweisung
[Python] Wie man PCA mit Python macht
So sammeln Sie Bilder in Python
[Einführung in Python] So analysieren Sie JSON
[Python] So löschen Sie eine Zeile / Spalte in einer Tabelle (Liste der Optionen für die Drop-Methode)
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Löschen Sie mehrere Elemente in der Python-Liste
Umgang mit Japanisch mit Python
So stellen Sie fest, dass in Python3 ein Kreuzschlüssel eingegeben wurde
[Python] Verschieben Sie Dateien, die die Bedingungen erfüllen
Dynamisches Definieren von Variablen in Python
So machen Sie R chartr () in Python
So löschen Sie abgelaufene Sitzungen in Django
[Itertools.permutations] So löschen Sie eine Sequenz in Python
Senden Sie mit Python (Python3) E-Mails an mehrere Empfänger.
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
So extrahieren Sie einen Polygonbereich in Python
So überprüfen Sie die Version von opencv mit Python
So wechseln Sie die Python-Version in Cloud9
So passen Sie den Bildkontrast in Python an
Verwendung von __slots__ in der Python-Klasse
So füllen Sie mit Python dynamisch Nullen aus
Verwendung regulärer Ausdrücke in Python
So zeigen Sie Hello World in Python an
Verwendung ist und == in Python
Wie schreibe ich Ruby to_s in Python
Einführung in Vektoren: Lineare Algebra in Python <1>
Einführung in die Überprüfung der Wirksamkeit Kapitel 1 in Python geschrieben
So schreiben Sie eine Zeichenfolge, wenn Python mehrere Zeilen enthält
Verwendung der C-Bibliothek in Python
So empfangen Sie Befehlszeilenargumente in Python
[REAPER] Wie man Reascript mit Python spielt
So löschen Sie einen Taple in einer Liste (Python)
[Einführung in die Udemy Python3 + -Anwendung] 23. Verwendung von Tapuru
So generieren Sie eine Sequenz in Python und C ++
Einbetten von Variablen in Python-Strings
Verwendung mehrerer Argumente bei der Parallelverarbeitung mithilfe der Mehrfachverarbeitung in Python
Einführung in die Überprüfung der Wirksamkeit Kapitel 3 in Python geschrieben
So zeichnen Sie Bilder mit mehreren Anpassungen nebeneinander mit Python
tse - Einführung in den Text Stream Editor in Python
Verwendung der Python-Bildbibliothek in der Python3-Serie
So erstellen Sie eine JSON-Datei in Python
[Python] Zeichnen mehrerer Diagramme mit Matplotlib
Geschrieben "Einführung in die Effektüberprüfung" in Python