2015-09-16 12 views
7

Mam pandę z bazą danych Pythona df z wieloma wierszami. Z tych wierszy chcę wyciąć i używać tylko wierszy zawierających słowo "kulka" w kolumnie "treść". Aby to zrobić, mogę zrobić:Filtrowanie pand pod kątem folderów zawierających dane str

df[df['body'].str.contains('ball')]

Problem w tym, że ma to być przypadek niewrażliwe, co oznacza, że ​​jeśli słowo lub Ball Ball pojawił się, będę chciał te, jak również. Jednym ze sposobów wyszukiwania bez rozróżniania wielkości liter jest zamiana łańcucha na małe litery, a następnie wyszukiwanie w ten sposób. Zastanawiam się, jak to zrobić. Próbowałem

df[df['body'].str.lower().contains('ball')]

Ale to nie działa. Nie jestem pewien, czy mam użyć funkcji lambda w tym czy coś podobnego.

Odpowiedz

15

Mogłeś użyć .str ponownie, aby uzyskać dostęp do metod ciąg znaków lub (lepiej, IMHO) używać case=False zagwarantować case niewrażliwość:

>>> df = pd.DataFrame({"body": ["ball", "red BALL", "round sphere"]}) 
>>> df[df["body"].str.contains("ball")] 
    body 
0 ball 
>>> df[df["body"].str.lower().str.contains("ball")] 
     body 
0  ball 
1 red BALL 
>>> df[df["body"].str.contains("ball", case=False)] 
     body 
0  ball 
1 red BALL 
>>> df[df["body"].str.contains("ball", case=True)] 
    body 
0 ball 

(Zauważ, że jeśli masz zamiar być przypisania robi , jest to lepszy nawyk używania df.loc, aby uniknąć przerażającego SettingWithCopyWarning, ale jeśli właśnie wybieramy tutaj, to nie ma znaczenia.)

(Uwaga # 2: zgadnij, że naprawdę nie musiałem określać "rundy" "tam ..)

+0

A mazing. Byłem blisko łączenia "str" ​​wydarzeń. Nie wiedziałem, że "str.contains" ma opcję 'case = False'. To wspaniale. Jeszcze jedna obserwacja: dostałem przerażające SettingWithCopy Warning, o którym wspomniałeś. Czy mógłbyś trochę się nad tym zastanowić? Moim celem jest stworzenie nowej ramki danych zawierającej tylko wiersze zawierające "kulę". – David

+1

To trochę za dużo historii do napisania tutaj w komentarzach. Możesz przeczytać [tę sekcję] (http://pandas-docs.github.io/pandas-docs-travis/indexing.html?highlight=settingwithcopywarning#returning-a-view-versus-a-kopia) dokumentacji dla Wyjaśnienie. – DSM

Powiązane problemy