Замена одного или нескольких значений в столбце в DataFrame Pandas

Чтобы заменить значения в столбце на основе условия в Pandas DataFrame, вы можете использовать свойство DataFrame.loc, numpy.where() или DataFrame.where().

В этом руководстве мы рассмотрим все эти процессы на примерах программ.

Метод 1: в зависимости от условия

Чтобы заменить значения в столбце на основе условия с помощью DataFrame.loc, используйте следующий синтаксис.

DataFrame.loc[condition, column_name] = new_value

В следующей программе мы заменим те значения в столбце «a», которые удовлетворяют условию, что значение меньше нуля.

import pandas as pd

df = pd.DataFrame([
	[-10, -9, 8],
	[6, 2, -4],
	[-8, 5, 1]],
	columns=['a', 'b', 'c'])

df.loc[(df.a < 0), 'a'] = 0
print(df)

Вывод:

   a  b  c
0  0 -9  8
1  6  2 -4
2  0  5  1

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

DataFrame.loc[condition, (column_1, column_2)] = new_value

В следующей программе мы заменим те значения в столбцах «a» и «b», которые удовлетворяют условию, что значение меньше нуля.

import pandas as pd

df = pd.DataFrame([
	[-10, -9, 8],
	[6, 2, -4],
	[-8, 5, 1]],
	columns=['a', 'b', 'c'])

df.loc[(df.a < 0), ('a', 'b')] = 0
print(df)

Вывод:

   a  b  c
0  0  0  8
1  6  2 -4
2  0  0  1

Метод 2: с помощью where

Чтобы заменить значения в столбце на основе условия с помощью numpy.where, используйте следующий синтаксис.

DataFrame['column_name'] = numpy.where(condition, new_value, DataFrame.column_name)

В следующей программе мы воспользуемся методом numpy.where() и заменим те значения в столбце «a», которые удовлетворяют условию, что значение меньше нуля.

import pandas as pd
import numpy as np

df = pd.DataFrame([
	[-10, -9, 8],
	[6, 2, -4],
	[-8, 5, 1]],
	columns=['a', 'b', 'c'])

df['a'] = np.where((df.a < 0), 0, df.a)
print(df)

Вывод:

   a  b  c
0  0 -9  8
1  6  2 -4
2  0  5  1

Метод 3

Чтобы заменить значения в столбце на основе условия с помощью numpy.where, используйте следующий синтаксис.

DataFrame['column_name'].where(~(condition), other=new_value, inplace=True)
  • column_name – это столбец, в котором необходимо заменить значения.
  • condition – это логическое выражение, которое применяется для каждого значения в столбце.
  • new_value заменяет (поскольку inplace = True) существующее значение в указанном столбце на основе условия.

В следующей программе мы будем использовать метод DataFrame.where() и заменим те значения в столбце «a», которые удовлетворяют условию, что значение меньше нуля.

import pandas as pd

df = pd.DataFrame([
	[-10, -9, 8],
	[6, 2, -4],
	[-8, 5, 1]],
	columns=['a', 'b', 'c'])

df['a'].where(~(df.a < 0), other=0, inplace=True)
print(df)

Вывод:

   a  b  c
0  0 -9  8
1  6  2 -4
2  0  5  1

В этом руководстве на примерах Python мы узнали, как заменить значения столбца в DataFrame новым значением в зависимости от условия.

Как заменить несколько значений?

Чтобы заменить несколько значений в DataFrame, вы можете использовать метод DataFrame.replace() со словарем различных замен, переданных в качестве аргумента.

Пример 1

Синтаксис для замены нескольких значений в столбце DataFrame:

DataFrame.replace({'column_name' : { old_value_1 : new_value_1, old_value_2 : new_value_2}})

В следующем примере мы будем использовать метод replace() для замены 1 на 11 и 2 на 22 в столбце a.

import pandas as pd

df = pd.DataFrame([
	[4, -9, 8],
	[1, 2, -4],
    [2, 2, -8],
    [0, 7, -4],
	[2, 5, 1]],
	columns=['a', 'b', 'c'])

df = df.replace({'a':{1:11, 2:22}})
print(df)

Вывод:

    a  b  c
0   4 -9  8
1  11  2 -4
2  22  2 -8
3   0  7 -4
4  22  5  1

Пример 2

Синтаксис для замены нескольких значений в нескольких столбцах DataFrame:

DataFrame.replace({'column_name_1' : { old_value_1 : new_value_1, old_value_2 : new_value_2},
                   'column_name_2' : { old_value_1 : new_value_1, old_value_2 : new_value_2}})

В следующем примере мы воспользуемся методом replace() для замены 1 на 11 и 2 на 22 в столбце a; 5 с 55 и 2 с 22 в столбце b.

import pandas as pd

df = pd.DataFrame([
	[4, -9, 8],
	[1, 2, -4],
    [2, 2, -8],
    [0, 7, -4],
	[2, 5, 1]],
	columns=['a', 'b', 'c'])

df = df.replace({'a':{1:11, 2:22}, 'b':{5:55, 2:22}})
print(df)

Вывод:

    a   b  c
0   4  -9  8
1  11  22 -4
2  22  22 -8
3   0   7 -4
4  22  55  1

В этом руководстве на примерах Python мы узнали, как заменить несколько значений в Pandas DataFrame в одном или нескольких столбцах.

2 комментария для “Замена одного или нескольких значений в столбце в DataFrame Pandas

  1. Везде условия на основе цифр и > или <, а если в признаке находятся строки и нужно что бы строчное значение совпадало со значениями из списка, которые нужно заменить!?

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

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