2016-03-31 40 views
1

Ich möchte eine Funktion schreiben, die eine DataFrame durch Funktionseingaben filtert. Mein erster Versuch hier ist:Filtern nach variablen Pandas

def Breakdown(file, key = None, value = None): 
    if key is not None: 
     if sampreach in ['s', 'S', 'sample', 'Sample']: 
      sampreach = sample[sample.key in [value]] 
      CountName = 'Total Count' 
     elif sampreach in ['r', 'R', 'reachable', 'Reachable']: 
      sampreach = reachable[reachable.key in [value]] 
      CountName = 'Reachable Count' 
    else: 
     if sampreach in ['s', 'S', 'sample', 'Sample']: 
      sampreach = sample 
      CountName = 'Total Count' 
     elif sampreach in ['r', 'R', 'reachable', 'Reachable']: 
      sampreach = reachable 
      CountName = 'Reachable Count' 

Aber ich habe folgende Fehlermeldung:

AttributeError: 'DataFrame' object has no attribute 'key' 

Das Ziel ist in der Lage sein key gleich den Namen einzustellen einen Spaltenkopfes und value als Name ein zu filternder Wert oder besser noch ein Bereich von zu filternden Werten.

Vielen Dank im Voraus für die Hilfe!

+1

Könnten Sie bitte einige Beispieldaten und das erwartete Ergebnis liefern? – Alexander

Antwort

1

Eine Sache, die auffällt und konnte den Fehler verursachen Sie sehen, ist:

sampreach = sample[sample.key in [value]] 

, die besser funktionieren könnte als

sampreach = sample[sample[key].isin(value)] 

Aber wie in den Kommentaren vorgeschlagen, gibt es einige Informationen fehlen (Was ist zum Beispiel sampreach?) sowie Beispieldaten und erwartete Ausgabe, um eine fundiertere Vermutung darüber zu erhalten, was vor sich geht.

+0

Vielen Dank! Das hat perfekt funktioniert. – Josh