Фильтр для струн в серии Pandas - PullRequest
       1

Фильтр для струн в серии Pandas

0 голосов
/ 14 сентября 2018

Есть ли лучший способ отфильтровать строки в серии Pandas?

Вот что я придумал:

df = pd.DataFrame({'a': [1,2,3,4,'cat','hat','mat'], 'b': [1,2,3,4,5,6,7] })

Оригинал:

a   b
0   1   1
1   2   2
2   3   3
3   4   4
4   cat 5
5   hat 6
6   mat 7

df = df[df['a'].apply(lambda x: isinstance(x, str))]

Результат:

a   b
4   cat 5
5   hat 6
6   mat 7

Однако этот синтаксис кажется многословным. Есть ли что-то в форме? :

df[df['a'].is_type(str)] 

РЕДАКТИРОВАТЬ: Я заинтересован в проверке типа, а не содержимого. Так, например, я хотел бы включить '12345' и исключить 12345.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Также вы можете попробовать:

df[df.a.str.isalpha() == True]

Out:

     a  b
4  cat  5
5  hat  6
6  mat  7
0 голосов
/ 14 сентября 2018

Я буду рекомендовать to_numeric

df[pd.to_numeric(df.a,errors='coerce').isna()]
Out[246]: 
     a  b
4  cat  5
5  hat  6
6  mat  7

Если вы считаете ситуацию, упомянутую в комментарии, нулем

df[df.a.map(lambda x : type(x).__name__)=='str']
Out[257]: 
     a  b
4  cat  5
5  hat  6
6  mat  7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...