python pandas loc - фильтр для списка значений
Это должно быть невероятно легко, но я не могу заставить его работать.
Я хочу отфильтровать мой набор данных по двум или более значениям.
#this works, when I filter for one value
df.loc[df['channel'] == 'sale']
#if I have to filter, two separate columns, I can do this
df.loc[(df['channel'] == 'sale')&(df['type']=='A')]
#but what if I want to filter one column by more than one value?
df.loc[df['channel'] == ('sale','fullprice')]
Должно ли это быть оператором ИЛИ? Я могу сделать что-то, как в SQL с помощью в?
Ответы
Ответ 1
Существует df.isin(values)
который проверяет, содержится ли каждый элемент в DataFrame
в values
. Итак, как писал @MaxU в комментарии, вы можете использовать
df.loc[df['channel'].isin(['sale','fullprice'])]
фильтровать один столбец по нескольким значениям.