2016-04-06 6 views
0

Я хотел бы знать, есть ли способ выбора строк на основе списка значений. То есть, создайте подмножество из фрейма данных, основанное на значениях из списка.Выбор подмножества базы данных pandas на основе указанного списка значений

Чтобы пояснить далее, я беру пример DataFrame от Chris Albon. Предположим, у меня есть следующий dataframe:

raw_data = { 
     'subject_id': ['1', '2', '3', '4', '5'], 
     'first_name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'], 
     'last_name': ['Anderson', 'Ackerman', 'Ali', 'Aoni', 'Atiches']} 
df_a = pd.DataFrame(raw_data, columns = ['subject_id', 'first_name', 'last_name']) 
df_a 

Я только хочу, чтобы выбрать строки на основе «first_name» из списка ниже:

fnames = ['Alex', 'Alice', 'Ayoung'] 

То, что я всегда делал это в петлю Пробегают fnames с условием:

for fn in fnames: 
    df_name = df_a[(df_a['first_name'] == fn 

, а затем добавьте/CONCAT каждая строка в новый кадр данных, чтобы создать то, что я хочу. Есть ли лучший способ подмножества DataFrame на основе значений из списка?

+1

Этот вопрос должен быть закрыт, увидеть выше простофилю в основном вы хотите сделать 'df_a [. Df_a [ 'first_name'] ISIN (fnames)]' – EdChum

+0

Ок, спасибо , Пожалуйста, закройте вопрос. Я не знаю как? – Rohit

+0

Спасибо Ed. Извините за обман. Не знал точно, что искать. – Rohit

ответ

0

Используйте isin метод:

df_name = df_a[(df_a['first_name'].isin(fn) 
+0

Итак, вы говорите, мне все еще нужно зациклиться? – Rohit

+0

Я пробовал ваше решение, но я получаю сообщение об ошибке: KeyError: «['Alex' 'Amy' 'Allen' 'Alice' 'Ayoung'] не в индексе" – Rohit

Смежные вопросы