Pandas: как использовать эквивалент np.where()


Вы можете использовать функцию NumPy where() для быстрого обновления значений в массиве NumPy, используя логику if-else.

Например, в следующем коде показано, как обновить значения в массиве NumPy, соответствующие определенному условию:

import numpy as np

#create NumPy array of values
x = np.array([1, 3, 3, 6, 7, 9])

#update valuesin array based on condition
x = np.where ((x < 5) | (x > 8), x/2, x)

#view updated array
x

array([0.5, 1.5, 1.5, 6. , 7. , 4.5])

Если заданное значение в массиве было меньше 5 или больше 8, мы делили значение на 2.

В противном случае мы оставили значение без изменений.

Мы можем выполнить аналогичную операцию в pandas DataFrame, используя функцию pandas where() , но синтаксис немного отличается.

Вот основной синтаксис с использованием функции NumPy where():

x = np.where (condition, value_if_true, value_if_false)

А вот основной синтаксис с использованием функции pandas where():

df['col'] = (value_if_false). where (condition, value_if_true)

В следующем примере показано, как использовать функцию where() в pandas на практике.

Пример: эквивалент np.where() в Pandas

Предположим, у нас есть следующие Pandas DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'A': [18, 22, 19, 14, 14, 11, 20, 28],
 'B': [5, 7, 7, 9, 12, 9, 9, 4]})

#view DataFrame
print(df)

 A B
0 18 5
1 22 7
2 19 7
3 14 9
4 14 12
5 11 9
6 20 9
7 28 4

Мы можем использовать следующую функцию панд where() для обновления значений в столбце A на основе определенного условия:

#update values in column A based on condition
df['A'] =(df['A'] / 2). where(df['A'] < 20, df['A'] \* 2)

#view updated DataFrame
print(df)

 A B
0 9.0 5
1 44.0 7
2 9.5 7
3 7.0 9
4 7.0 12
5 5.5 9
6 40.0 9
7 56.0 4

Если заданное значение в столбце А было меньше 20, мы умножали это значение на 2.

В противном случае мы разделили значение на 2.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Pandas: как подсчитать значения в столбце с условием
Pandas: как удалить строки в DataFrame на основе условия
Pandas: как заменить значения в столбце на основе условия

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.