2015-04-24 12 views
17

Pracuję w Pythonie z pandą DataFrame gier wideo, każdy z gatunku. Próbuję usunąć dowolną grę wideo z gatunku, który pojawia się mniej niż kilka razy w DataFrame, ale nie mam pojęcia, jak to zrobić. Znalazłem a StackOverflow question, który wydaje się być powiązany, ale nie mogę w ogóle rozszyfrować tego rozwiązania (być może dlatego, że nigdy nie słyszałem o R i pamięć programowania funkcjonalnego jest w najlepszym wypadku zardzewiała).Jak mogę odfiltrować pandas DataFrame na podstawie liczby wartości?

Pomoc?

Odpowiedz

29

Zastosowanie 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 

Polecam czytanie split-combine-section of the docs.

+0

Rzeczywiście próbowałem tego wcześniej, ale nie mogłem go uruchomić. Okazało się, że problem dotyczy mojej funkcji. Naprawiony! – uchuujin

+1

Możemy nawet grupować według poziomu MultiIndex: groupby (level = ...). Dokładnie to, co potrzebowałem – Winand

Powiązane problemy