2017-02-23 4 views
2

Ich versuche, durch einen Datenrahmen durch Pandas, durch die Suche nach jedem Wert, der nur einmal im Rahmen auftritt. Mein Code so weit ist die folgende:Pandas: Schleife Datenrahmen von value_counts

import pandas as pd 
df = pd.read_csv('xyz.csv') 
saved_column = df['S07'][df['Class'].isin(['GTD'])].round(decimals=1).value_counts() 

Wie kann ich Schleife durch diesen Datenrahmen, alle Werte erfassen, die nur einmal auftreten und schließlich sie aus der CSV-Datei löschen?

Vielen Dank im Voraus für Ihre Hilfe!

wäre ein Beispiel: (Input-Daten in CSV-Datei)

In [2]: df 
Out[2]: Class S07 
     GTD 2.23 
     GTD 2.21 
     GTD 1.82 
     GTD 2.26 

ich den Code will die Zeile mit GTD löschen - 1.82, seit seinem gerundeter Wert (1,8) innerhalb der nur einmal auftritt Datensatz.

Beispieldatensatz: https://1drv.ms/u/s!AvuwPSn7axNcePUsJD8kMB1FnlE

+3

können Sie ein Beispieldatensatz schreiben und gewünschter Datensatz? Bitte lesen [wie man gute reproduzierbare Pandas Beispiele macht] (http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples) – MaxU

Antwort

0

Sie duplicated() Methode verwenden:

In [86]: df 
Out[86]: 
    Class S07 
0 AAA 1.10 
1 AAA 1.11 
2 GTD 2.23 
3 GTD 2.21 
4 GTD 1.82 
5 GTD 2.26 

In [87]: x = df.loc[df.Class.isin(['GTD']), 'S07'].round(1).duplicated(keep=False) 

In [88]: df.loc[df.index[x.index][x]] 
Out[88]: 
    Class S07 
2 GTD 2.23 
3 GTD 2.21 

Jetzt können Sie die Ergebnisse in eine neue CSV-Datei speichern:

df.loc[df.index[x.index][x]].to_csv('/path/to/file.csv', index=False, ...) 
+0

Danke für Ihre schnelle Antwort. Ich erhalte jedoch die folgende Fehlermeldung: Unalignable boolescher Serienschlüssel wird bereitgestellt. Vielen Dank für Ihre Geduld ... – Phil

+0

@Phil, ich habe meine Antwort aktualisiert - bitte überprüfen Sie – MaxU

+0

Awesome, funktioniert wie Charme! Vielen Dank! – Phil

Verwandte Themen