Как заменить значение в столбце
Перейти к содержимому

Как заменить значение в столбце

  • автор:

Заменить значения (Power Query)

В Power Query можно заменить одно значение другим значением в выбранном столбце. Вы можете заменить определенные значения или целое значение в ячейке. Замена значений в запросе никак не изменяет внешний источник данных.

Замена текстовых значений

По умолчанию текстовые значения выполняют поиск и замену определенной текстовой строки. Это поведение можно изменить.

  1. Чтобы открыть запрос, найдите ранее загруженный из Редактор Power Query, выберите ячейку в данных, а затем выберите Запрос >Изменить. Дополнительные сведения см. в статье Создание, загрузка и изменение запроса в Excel.
  2. Выберите столбец с текстовым типом данных.
  3. Выберите Главная или Преобразовать >Заменить значение. Откроется диалоговое окно Заменить значения .
  4. В поле Значение для поиска введите значение для поиска.
  5. В поле Заменить на введите значение для замены.
  6. В разделе Дополнительные параметры выполните одно или несколько из следующих действий:

Замена числа, даты и времени или логических значений

По умолчанию для нетекстовых столбцов выполняется поиск и замена полного содержимого ячейки. Это поведение нельзя изменить.

  1. Чтобы открыть запрос, найдите ранее загруженный из Редактор Power Query, выберите ячейку в данных, а затем выберите Запрос >Изменить. Дополнительные сведения см. в статье Создание, загрузка и изменение запроса в Excel.
  2. Выберите столбец с числом, датой или временем или логическим типом данных.
  3. Выберите Главная или Преобразовать >Заменить значение. Откроется диалоговое окно Заменить значения .
  4. В поле Значение для поиска введите значение для поиска.
  5. В поле Заменить на введите значение для замены.
  6. Нажмите кнопку ОК.

Как заменить значения в кадре данных 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 , но не вышло: видимо где-то ошибся. Прошу помощи 🙂

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *