Ich habe eine Liste von Rechnungen an Kunden gesendet. Manchmal wird jedoch eine fehlerhafte Rechnung gesendet, die später storniert wird. Mein Pandas Datenrahmen sieht ungefähr so aus, außer viel größer (ca. 3 Millionen Zeilen)Löschen von Zeilen aus Pandas Datareframe entfernen
index | customer | invoice_nr | amount | date
---------------------------------------------------
0 | 1 | 1 | 10 | 01-01-2016
1 | 1 | 1 | -10 | 01-01-2016
2 | 1 | 1 | 11 | 01-01-2016
3 | 1 | 2 | 10 | 02-01-2016
4 | 2 | 3 | 7 | 01-01-2016
5 | 2 | 4 | 12 | 02-01-2016
6 | 2 | 4 | 8 | 02-01-2016
7 | 2 | 4 | -12 | 02-01-2016
8 | 2 | 4 | 4 | 02-01-2016
... | ... | ... | ... | ...
... | ... | ... | ... | ...
Nun, ich möchte alle Zeilen fallen zu lassen, für die die customer
, invoice_nr
und date
identisch sind, aber die amount
entgegengesetzte Werte hat.
Korrekturen von Rechnungen erfolgen immer am selben Tag mit identischer Rechnungsnummer. Die Rechnungsnummer ist eindeutig an den Kunden gebunden und entspricht immer einer Transaktion (die aus mehreren Komponenten bestehen kann, zB für customer = 2
, invoice_nr = 4
). Korrekturen von Rechnungen erfolgen entweder nur zur Änderung amount
berechnet, oder zur Aufteilung amount
in kleinere Komponenten. Daher wird der annullierte Wert nicht auf demselben invoice_nr
wiederholt.
Jede Hilfe, wie man dies programmiert, würde sehr geschätzt werden.
Versuchen Sie, die Zeilen zu lesen in ein 'dict', wobei' invoice_nr' und 'datum' durch Trennzeichen getrennt sind, sagen wir' #'. Wenn Sie nun einen redundanten Schlüssel erhalten, löschen Sie ihn. –
@KrishnachandraSharma Ich bin mir nicht ganz sicher, ob ich dir folge, was du meinst. Sollte ich die 'billing_nr' und das' date' als 'dict'-Schlüssel lesen? Wie würde ich dann mehrere Zeilen mit demselben 'invoice_nr' und 'Datum' behandeln? –
Da Sie alle Zeilen mit demselben 'invoice_nr' und' datum' löschen möchten, würde das Vorbereiten der Schlüsselzeichenfolge als 'invoice_nr # date' Ihnen helfen, doppelte Zeilen zu identifizieren, die Sie löschen möchten. –