Заменить значения (Power Query)
В Power Query можно заменить одно значение другим значением в выбранном столбце. Вы можете заменить определенные значения или целое значение в ячейке. Замена значений в запросе никак не изменяет внешний источник данных.
Замена текстовых значений
По умолчанию текстовые значения выполняют поиск и замену определенной текстовой строки. Это поведение можно изменить.
- Чтобы открыть запрос, найдите ранее загруженный из Редактор Power Query, выберите ячейку в данных, а затем выберите Запрос >Изменить. Дополнительные сведения см. в статье Создание, загрузка и изменение запроса в Excel.
- Выберите столбец с текстовым типом данных.
- Выберите Главная или Преобразовать >Заменить значение. Откроется диалоговое окно Заменить значения .
- В поле Значение для поиска введите значение для поиска.
- В поле Заменить на введите значение для замены.
- В разделе Дополнительные параметры выполните одно или несколько из следующих действий:
Замена числа, даты и времени или логических значений
По умолчанию для нетекстовых столбцов выполняется поиск и замена полного содержимого ячейки. Это поведение нельзя изменить.
- Чтобы открыть запрос, найдите ранее загруженный из Редактор Power Query, выберите ячейку в данных, а затем выберите Запрос >Изменить. Дополнительные сведения см. в статье Создание, загрузка и изменение запроса в Excel.
- Выберите столбец с числом, датой или временем или логическим типом данных.
- Выберите Главная или Преобразовать >Заменить значение. Откроется диалоговое окно Заменить значения .
- В поле Значение для поиска введите значение для поиска.
- В поле Заменить на введите значение для замены.
- Нажмите кнопку ОК.
Как заменить значения в кадре данных Pandas (с примерами)
Часто вам может понадобиться заменить значения в одном или нескольких столбцах кадра данных pandas.
К счастью, это легко сделать с помощью функции .replace() .
В этом руководстве представлено несколько примеров практического использования этой функции в следующем кадре данных:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame print(df) team division rebounds 0 A E 11 1 A W 8 2 B E 7 3 B E 6 4 B W 6 5 C W 5 6 C E 12
Пример 1: замена одного значения во всем фрейме данных
В следующем коде показано, как заменить одно значение во всем DataFrame pandas:
#replace 'E' with 'East' df = df.replace(['E'],' East') #view DataFrame print(df) team division rebounds 0 A East 11 1 A W 8 2 B East 7 3 B East 6 4 B W 6 5 C W 5 6 C East 12
Пример 2: замена нескольких значений во всем фрейме данных
В следующем коде показано, как заменить несколько значений во всем кадре данных pandas:
#replace 'E' with 'East' and 'W' with 'West' df = df.replace(['E', 'W'],['East', 'West']) #view DataFrame print(df) team division rebounds 0 A East 11 1 A West 8 2 B East 7 3 B East 6 4 B West 6 5 C West 5 6 C East 12
Пример 3. Замена одного значения в одном столбце
В следующем коде показано, как заменить одно значение в одном столбце:
#replace 6 with 0 in *rebounds* column df['rebounds'] = df['rebounds']. replace (6, 0) #view DataFrame print(df) team division rebounds 0 A E 11 1 A W 8 2 B E 7 3 B E 0 4 B W 0 5 C W 5 6 C E 12
Пример 4. Замена нескольких значений в одном столбце
Следующий код показывает, как заменить несколько значений в одном столбце:
#replace 6, 11, and 8 with 0, 1 and 2 in *rebounds* column df['rebounds'] = df['rebounds']. replace([6, 11, 8], [0, 1, 2]) #view DataFrame print(df) team division rebounds 0 A E 1 1 A W 2 2 B E 7 3 B E 0 4 B W 0 5 C W 5 6 C E 12
Pandas: как заменить значения в столбце на основе условия
Вы можете использовать следующий базовый синтаксис для замены значений в столбце кадра данных pandas на основе условия:
#replace values in 'column1' that are greater than 10 with 20 df.loc[df['column1'] > 10, 'column1'] = 20
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1. Замена значений в столбце на основе одного условия
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df team position points assists 0 A G 5 3 1 A G 7 8 2 A F 7 2 3 A F 9 6 4 B G 12 6 5 B G 13 5 6 B F 9 9 7 B F 14 5
Мы можем использовать следующий код, чтобы заменить каждое значение в столбце «точки», превышающее 10, значением 20:
#replace any values in 'points' column greater than 10 with 20 df.loc[df['points'] > 10, 'points'] = 20 #view updated DataFrame df team position points assists 0 A G 5 3 1 A G 7 8 2 A F 7 2 3 A F 9 6 4 B G 20 6 5 B G 20 5 6 B F 9 9 7 B F 20 5
Обратите внимание, что каждое из трех значений в столбце «точки», которые были больше 10, были заменены значением 20.
Пример 2. Замена значений в столбце на основе нескольких условий
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame df team position points assists 0 A G 5 3 1 A G 7 8 2 A F 7 2 3 A F 9 6 4 B G 12 6 5 B G 13 5 6 B F 9 9 7 B F 14 5
Мы можем использовать следующий код, чтобы заменить каждое значение в столбце «позиция», где количество очков меньше 10 или где количество передач меньше 5, строкой «Плохо»:
#replace string in 'position' column with 'bad' if points < 10 or assists < 5 df.loc[(df['points'] < 10) |(df['assists'] < 5), 'position'] = 'Bad ' #view updated DataFrame df team position points assists 0 A Bad 5 3 1 A Bad 7 8 2 A Bad 7 2 3 A Bad 9 6 4 B G 20 6 5 B G 20 5 6 B Bad 9 9 7 B F 20 5
Точно так же мы можем использовать следующий код, чтобы заменить каждое значение в столбце «позиция», где количество очков меньше 10 и где количество передач меньше 5, строкой «Плохо»:
#replace string in 'position' column with 'bad' if points < 10 and assists < 5 df.loc[(df['points'] < 10) &(df['assists'] < 5), 'position'] = 'Bad ' #view updated DataFrame df team position points assists 0 A Bad 5 3 1 A G 7 8 2 A Bad 7 2 3 A F 9 6 4 B G 12 6 5 B G 13 5 6 B F 9 9 7 B F 14 5
Обратите внимание, что в двух строках, где количество очков было меньше 10, а количество передач меньше 5, значение «позиция» было заменено строкой «Плохо».
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:
Замена значения в столбце по значению другого столбца Pandas DataFrame по условию
Как сделать так, чтобы при значении False в столбце Winner выводилась ячейка Dire, а при True - ячейка Radiant? Пример ниже:
Match ID Radiant Dire Winner 0 6808446343 beastcoast Team Aster Team Aster 1 6808199906 PSG.LGD Team Liquid PSG.LGD 2 6807837834 PSG.LGD OG PSG.LGD 3 6808433308 TSM FTX Team Spirit Team Spirit 4 6808416013 Fnatic Entity Fnatic .. . . . .
Пытался таким куском кода - не вышло, ячейки не менялись вовсе:
for i in range(len(df)): if df["Winner"][i] == "TRUE": df["Winner"][i] == df["Radiant"][i] elif df["Winner"][i] == "FALSE": df["Winner"][i] == df["Dire"][i]
Также были попытки через .loc , но не вышло: видимо где-то ошибся. Прошу помощи 🙂