Фильтрация только некоторых строк в столбце?

#python #python-3.x #pandas

#python #python-3.x #панды

Вопрос:

Если у меня есть df ниже:

 name|
Bob
3245
Chris
Amy
Chris
3242424
Amy
  

Если я хочу подать файл только для amy, но сохранить все строки, в которых есть номера, как я могу это сделать?

В основном фильтр для всех строк, в которых текст должен быть amy, но также включает все другие строки, которые являются не именами, а числами?

Вывод:

 name|
3245
Amy
3242424
Amy
  

Спасибо

Ответ №1:

Вы можете попробовать .str.match :

 df[df['name'].str.match('Amy').fillna(True) ]
  

Или вы можете попробовать свою логику:

 mask = df['name'].eq('Amy') | df['name'].astype(str).str.isnumeric()
df[mask]
  

Вывод:

       name
1     3245
3      Amy
5  3242424
6      Amy
  

Комментарии:

1. когда я пытаюсь, я возвращаю только amy, а не строки с номерами в name col

2. оба решения возвращают только текстовое имя amy, а не числа — это потому, что этот столбец является объектом Dtype>? @Quang Hoang

3. Привет, извините, нет, я имел в виду, что столбец является объектом dtype, но все же возвращаемый результат — это только строки amy, а не все остальные строки, где это 424242 или 256452, я не понимаю @Quang Hoang

4. @Chris90 сделайте df.to_dict() и опубликуйте вывод на свой вопрос.

5. df.head(10).to_dict() .