Одна из часто встречающихся задач при работе с данными — это фильтрация. Это актуально и при работе с базами данных, и при работе с данными в Pandas. В частности, часто требуется отфильтровать данные по тому, содержит ли определенная колонка какие-то конкретные значения. В SQL для этого используются операторы IN и NOT IN. А как сделать то же самое в Pandas?
Допустим, у нас есть таблица (DataFrame) с именем df, в которой есть колонка ‘country’, и мы хотим оставить в таблице только те строки, где в колонке ‘country’ стоят значения ‘UK’ или ‘China’. В SQL мы бы написали что-то вроде SELECT * FROM df WHERE country IN ('UK', 'China'). Как сделать то же самое в Pandas?
В Pandas для этого есть метод isin(). Вот как можно использовать его на нашем примере:
df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']})
countries_to_keep = ['UK', 'China']
df_filtered = df[df['country'].isin(countries_to_keep)]
Теперь df_filtered — это таблица, в которой остались только те строки из df, где в колонке ‘country’ стоит либо ‘UK’, либо ‘China’.
А если мы хотим сделать обратное, то есть оставить только те строки, где в колонке ‘country’ стоят значения, отличные от ‘UK’ и ‘China’? В SQL мы бы написали SELECT * FROM df WHERE country NOT IN ('UK', 'China'). В Pandas для этого есть метод ~isin(). Вот как можно использовать его на нашем примере:
df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']})
countries_to_exclude = ['UK', 'China']
df_filtered = df[~df['country'].isin(countries_to_exclude)]
Теперь df_filtered — это таблица, в которой остались только те строки из df, где в колонке ‘country’ стоит что-то, отличное от ‘UK’ и ‘China’.
Таким образом, для фильтрации данных в Pandas по значениям определенной колонки можно использовать методы isin() и ~isin(), которые аналогичны операторам IN и NOT IN в SQL.
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий