Seite 1 von 1

Löschen von Zeilen aus einem Dataframe funktioniert nicht?!

Verfasst: Montag 1. August 2016, 09:40
von KrachBumm
Hallo,

ich habe folgendes Problem:

Ich habe über pandas eine Dataframe über eine excel-Datei erstellen lassen und habe diese bearbeitet. Dabei habe ich die "Tabelle" um einige Spalten eingekürzt. Jetzt möchte ich anhand eines Werter (hier 'P') Zeilen aus einer Spalte löschen. Den Befehl dafür habe ich auch gefunden. Das Problem ist nur er löscht nichts. Weder den Wert, den ich gelöscht haben möchte, noch andere.

Hier meine Liste:

Code: Alles auswählen

       FAK_ART    FAK_DAT  LEIST_DAT      KD_CRM MW_BW       EQ_NR MATERIAL  \
0         ZPAF 2015-05-18 2015-05-31         TMD     E  1003507107  G230ETS   
1         ZPAF 2015-05-18 2015-05-31         TMD     B  1003507107  G230ETS   
2         ZPAF 2015-05-18 2015-05-31         TMD     E  1003507108  G230ETS   
3         ZPAF 2015-05-18 2015-05-31         TMD     B  1003507108  G230ETS   
4         ZPAF 2015-05-18 2015-05-31         TMD     E  1003507109  G230ETS   
5         ZPAF 2015-05-18 2015-05-31         TMD     P  1003507109  G230ETS   
6         ZPAF 2015-05-18 2015-05-31         TMD     E  1003507110  G230ETS   
7         ZPAF 2015-05-18 2015-05-31         TMD     B  1003507110  G230ETS   
8         ZPAF 2015-05-18 2015-05-31         TMD     E  1003507111  G230ETS   
9         ZPAF 2015-05-18 2015-05-31         TMD     B  1003507111  G230ETS   
10        ZPAF 2015-05-18 2015-05-31         TMD     P  1003507112  G230ETS   
11        ZPAF 2015-05-18 2015-05-31         TMD     B  1003507112  G230ETS   
12        ZPAF 2015-05-18 2015-05-31         TMD     E  1003507113  G230ETS   
13        ZPAF 2015-05-18 2015-05-31         TMD     B  1003507113  G230ETS   
14        ZPAF 2015-05-18 2015-05-31         TMD     P  1003507114  G230ETS   
15        ZPAF 2015-05-18 2015-05-31         TMD     B  1003507114  G230ETS
Hier mein Quelltext um die Zeile im Dataframe zu löschen:

Code: Alles auswählen

data_faktura = pd.read_excel('fakt_daten.xlsx')
data_faktura[data_faktura.MW_BW != 'P']
#data_faktura.query('MW_BW != P')
#data_faktura[data_faktura.MW_BW.str.strip() != 'P']
data_faktura.to_excel('fakt_daten_bereinigt.xlsx', index=False)
#print(data_faktura)
Wie ihr sehen könnt habe ich auch nach Leerzeichen gesucht aber es passiert einfach nichts.

Habt ihr Ideen, woran das liegen könnte bzw. wie ich das Problem lösen kann?

lg

Damian

Re: Löschen von Zeilen aus einem Dataframe funktioniert nicht?!

Verfasst: Montag 1. August 2016, 10:30
von KrachBumm
Problem gelöst! Danke!

Re: Löschen von Zeilen aus einem Dataframe funktioniert nicht?!

Verfasst: Montag 1. August 2016, 10:57
von BlackJack
@KrachBumm: Wäre für andere praktisch zu wissen wie das Problem gelöst wurde.

Die Indexzugriffe die Du da stehen hast löschen nichts, sondern sie wählen aus. Das Ergebnis ist ein DataFrame mit den Zeilen, die die Bedingung erfüllen, die Du da formuliert hast. Mit diesem Ergebnis musst Du weiter arbeiten.

Re: Löschen von Zeilen aus einem Dataframe funktioniert nicht?!

Verfasst: Montag 1. August 2016, 11:00
von KrachBumm
achso stimmt! Sorry!

Die Lösung war eigentlich simpel.

Ich hatte einfach vergessen den Befehl auf mein Dataframe zurückzuführen!

Das war der ursprüngliche Befehl von mir:

Code: Alles auswählen

data_faktura[data_faktura.MW_BW != 'P']
Hier wurden die Werte einfach nur ausgewählt, wie du gesagt hast. Aber das eigentliche DataFrame wurde nicht bearbeitet.

Durch diesen Befehl wurden diese Zeilen dann auch aus dem Dataframe entfernt:

Code: Alles auswählen

data_faktura = data_faktura[data_faktura.MW_BW != 'P'
]

Hoffe die Erklärung ist verständlich ;)

Falls nicht bitte posten was unklar ist!

lg

Damian

Re: Löschen von Zeilen aus einem Dataframe funktioniert nicht?!

Verfasst: Montag 1. August 2016, 11:05
von sebastian0202
Die Zeilen wurden nicht entfernt, sondern alle Zeilen selektiert die der Bedingung entsprechen.
Und diese Selektion hast du nun neu gespeichert.
Also war es eigentlich andersherum :P