2015-04-24 16 views
17

Ich arbeite in Python mit einem Pandas DataFrame von Videospielen, jeweils mit einem Genre. Ich versuche, jedes Videospiel mit einem Genre zu entfernen, das weniger als einige Male im DataFrame erscheint, aber ich habe keine Ahnung, wie ich das anstellen soll. Ich fand a StackOverflow question, das scheint verwandt zu sein, aber ich kann die Lösung überhaupt nicht entziffern (möglicherweise, weil ich nie von R gehört habe und meine Erinnerung an funktionales Programmieren am besten rostig ist).Wie filtere ich einen Pandas DataFrame basierend auf Wertzählungen?

Hilfe?

Antwort

29

Verwendung groupby filter:

In [11]: df = pd.DataFrame([[1, 2], [1, 4], [5, 6]], columns=['A', 'B']) 

In [12]: df 
Out[12]: 
    A B 
0 1 2 
1 1 4 
2 5 6 

In [13]: df.groupby("A").filter(lambda x: len(x) > 1) 
Out[13]: 
    A B 
0 1 2 
1 1 4 

Ich empfehle die split-combine-section of the docs lesen.

+0

Ich habe es tatsächlich vorher versucht, aber ich konnte es nicht zum Laufen bringen. Es stellte sich heraus, dass das Problem bei meiner Funktion lag. Fest! – uchuujin

+1

Und wir können sogar nach MultiIndex-Ebene gruppieren: groupby (level = ...). Genau das, was ich gebraucht habe – Winand

Verwandte Themen