Чтобы заменить значения в столбце на основе условия в 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 в одном или нескольких столбцах.
А как заменить значение в ячейке столбца на модальное значение?
Везде условия на основе цифр и > или <, а если в признаке находятся строки и нужно что бы строчное значение совпадало со значениями из списка, которые нужно заменить!?