Чтобы запросить строки DataFrame на основе условия, примененного к столбцам, вы можете использовать метод pandas.DataFrame.query().
По умолчанию функция query() возвращает DataFrame, содержащий отфильтрованные строки. Вы также можете передать аргумент inplace = True функции, чтобы изменить исходный DataFrame.
Пример 1: с условием для одного столбца
В этом примере мы будем запрашивать DataFrame, чтобы вернуть отфильтрованный DataFrame со строками, которые удовлетворяют переданному логическому выражению.
import pandas as pd
#initialize a dataframe
df = pd.DataFrame(
[[21, 72, 67],
[23, 78, 62],
[32, 74, 56],
[73, 88, 67],
[32, 74, 56],
[43, 78, 69],
[32, 74, 54],
[52, 54, 76]],
columns=['a', 'b', 'c'])
#query single column
df1 = df.query('a>50')
#print the dataframe
print(df1)
Вывод:
a b c 3 73 88 67 7 52 54 76
Пример 2: с использованием оператора AND
В этом примере мы попытаемся применить условие к нескольким столбцам и использовать оператор AND.
import pandas as pd
#initialize a dataframe
df = pd.DataFrame(
[[21, 72, 67],
[23, 78, 62],
[32, 74, 56],
[73, 88, 67],
[32, 74, 56],
[43, 78, 69],
[32, 74, 54],
[52, 54, 76]],
columns=['a', 'b', 'c'])
#query multiple columns
df1 = df.query('a>30 and c>60')
#print the dataframe
print(df1)
Вывод:
a b c 3 73 88 67 5 43 78 69 7 52 54 76
Пример 3: с использованием оператора OR
В этом примере мы попытаемся применить условие к нескольким столбцам и использовать оператор OR.
import pandas as pd
#initialize a dataframe
df = pd.DataFrame(
[[21, 72, 67],
[23, 78, 62],
[32, 74, 56],
[73, 88, 67],
[32, 74, 56],
[43, 78, 69],
[32, 74, 54],
[52, 54, 76]],
columns=['a', 'b', 'c'])
#query multiple columns
df1 = df.query('a>50 or c>60')
#print the dataframe
print(df1)
Вывод:
a b c 0 21 72 67 1 23 78 62 3 73 88 67 5 43 78 69 7 52 54 76
Пример 4: с параметром inplace
Мы можем передать inplace = True, чтобы изменить фактический DataFrame, над которым мы работаем.
import pandas as pd
#initialize a dataframe
df = pd.DataFrame(
[[21, 72, 67],
[23, 78, 62],
[32, 74, 56],
[73, 88, 67],
[32, 74, 56],
[43, 78, 69],
[32, 74, 54],
[52, 54, 76]],
columns=['a', 'b', 'c'])
#query dataframe with inplace trues
df.query('a>50 and c>60', inplace=True)
#print the dataframe
print(df)
Вывод:
a b c 3 73 88 67 7 52 54 76
В этом руководстве по Pandas мы узнали, как запрашивать DataFrame с условиями, применяемыми к столбцам.