2016-04-17 5 views
1
module_category component_category year_month_sale year_month_repair 
0    M6    P16   200709   200904 
1    M2    P30   200709   200908 
2    M1    P12   200610   200802 
3    M1    P30   200605   200707 
4    M3    P06   200708   200712 

Ich habe einen Datenrahmen wie diesen. Ich würde gerne fragen, wie könnte ich eine Teilmenge von Datenrahmen mit year_month_repair >= 200802 nur so auswählen oder erstellen, dass das Ergebnis wie folgt wäre?Python Tupel mit Bedingungen auswählen

module_category component_category year_month_sale year_month_repair 
0    M6    P16   200709   200904 
1    M2    P30   200709   200908 
2    M1    P12   200610   200802 

Antwort

4

versuchen .loc[] Methode:

df.loc[df.year_month_repair >= '200802'] 

wo df ist Ihr Datenrahmen

+0

es zurückgegeben: unorderable Typen: str()> = int() – peterchen

+0

@joycey, ich habe meine Antwort aktualisiert - bitte überprüfen. Sie haben die Typen Ihrer Spalten nicht angegeben, also habe ich angenommen, dass alle Ihre 'year_'-Spalten Integer sind – MaxU

+0

oh ich sehe! Es ist jetzt in Ordnung! vielen Dank! – peterchen

0

Pythons filter() wäre hierfür perfekt sein:

condition = lambda x: x[3] >= 200802 
filteredDataframe = filter(condition, dataframe) 

Ich denke, das Codeblock ist selbsterklärend:

  • eine anonyme Funktion mit lambda wird erstellt, um angewendet werden jedes Tupel
  • Filter wendet diese Funktion an und gibt alle Tupel zurück, die True zurückgeben
+0

Danke, ich bin ganz neu zu Python. Ich möchte fragen, was bedeutet Bedingung = Lambda? – peterchen

+0

Ich habe versucht, den Code einzugeben, aber es gab Fehler: 'Funktion' Objekt ist nicht iterierbar – peterchen

+0

@joycey Lambda ist eine Form der Erstellung von kurzen, anonymen Funktionen. Wenn Sie lambda x: 5 schreiben, ist das das Gleiche wie def somefunc (x): return 5. Im Beispiel wird anstelle einer ganzen Zahl ein Bool zurückgegeben. Filter wendet sie dann nur auf jedes Element (Dataset) Ihrer Datentabelle an und sucht nach dem vierten Element des Tupels. Wenn es größer als 200802 ist, gibt das Lambda "True" zurück und daher weiß der Filter, dass er das Tupel verwenden soll. – xXliolauXx