2015-04-24 2 views
1

Я хочу выделить часть фрейма данных, где значение в одном конкретном столбце является одним из нескольких значений.Pandas DataFrame - выберите строки, которые соответствуют одному из многих условий.

Что я делаю сейчас

idx = my_df['Column'].apply(lambda z: z in selected_items) 
new_df = my_df[idx] 

Есть ли лучший способ для достижения этой цели?

ответ

2

Это должно работать?

new_df = my_df[my_df['Column'].isin(selected_items)] 
+0

Спасибо. Прежде чем я приму свой ответ, как насчет случая, когда len (selected_items) == 1, т. Е. У меня есть только один элемент для соответствия? –

+0

@BaronYugovich для одиночных совпадений вы можете использовать 'new_df = my_df [my_df ['Column'] == some_val]' – EdChum

+0

Также если ваш список содержит один элемент 'isin', он все равно будет работать – EdChum

1

Использование isin:

new_df = my_df[idx].isin(selected_items) 

пример:

In [579]: 

df = pd.DataFrame({'a': [0, 1, 2, 3, 4, 5, 6, 7]}) 
​ 
df 
Out[579]: 
    a 
0 0 
1 1 
2 2 
3 3 
4 4 
5 5 
6 6 
7 7 
In [581]: 

df[df['a'].isin([3,5,6])] 
Out[581]: 
    a 
3 3 
5 5 
6 6 

Другой метод query:

In [582]: 

df.query('a in [3,5,6]') 
Out[582]: 
    a 
3 3 
5 5 
6 6 
Смежные вопросы