DataFrame.replace() / Series.replace()
Метод replace() заменяет значения в данных по правилам: скаляр на скаляр, список на список, по словарю или по регулярному выражению.
Сигнатура
DataFrame.replace(to_replace=None, value=NoDefault, inplace=False,
limit=None, regex=False, method=NoDefault)
Параметры
to_replace— что заменять: скаляр, список, словарь, regex.value— на что заменять.regex— интерпретироватьto_replaceкак регулярку.inplace— изменить на месте.
Возвращаемое значение
Новый DataFrame / Series (или None при inplace=True).
Примеры
Пример 1. Скаляр на скаляр
import pandas as pd
s = pd.Series([22, -999, 23, -999, 25]) # -999 — флаг ошибки
print(s.replace(-999, None))
0 22.0
1 NaN
2 23.0
3 NaN
4 25.0
dtype: float64
Пример 2. Список → список
import pandas as pd
s = pd.Series(["ok", "err", "warn", "ok"])
print(s.replace(["err", "warn"], ["E", "W"]))
0 ok
1 E
2 W
3 ok
dtype: object
Пример 3. Словарь
import pandas as pd
df = pd.DataFrame({"status": ["ok", "fail", "ok", "fail"]})
print(df.replace({"ok": 1, "fail": 0}))
status
0 1
1 0
2 1
3 0
Пример 4. По столбцам
import pandas as pd
df = pd.DataFrame({"a": [1, 2, 3], "b": [1, 2, 3]})
print(df.replace({"a": {1: 100}, "b": {3: 300}}))
a b
0 100 1
1 2 2
2 3 300
Пример 5. Regex
import pandas as pd
s = pd.Series(["sensor_01", "sensor_02", "actuator_01"])
print(s.replace(r"^sensor_", "S", regex=True))
0 S01
1 S02
2 actuator_01
dtype: object
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.