DataFrame.update() / Series.update()

Метод update() модифицирует объект на месте, заменяя значения данными из другого DataFrame или Series, выровненных по индексу. По умолчанию заменяются только значения, в которых нет NaN в источнике. Метод меняет исходный объект, ничего не возвращая.

Сигнатура

DataFrame.update(other, join="left", overwrite=True,
                 filter_func=None, errors="ignore")
Series.update(other)

Параметры

  • other — DataFrame/Series с обновлёнными значениями.

  • join — тип объединения (поддерживается только "left").

  • overwrite — если True, перезаписывать все совпадающие, иначе только NaN в исходнике.

  • filter_func — функция, возвращающая маску — какие значения обновлять.

  • errors — "raise" или "ignore" при пересечениях не-NaN.

Возвращаемое значение

None. Изменения происходят на месте.

Примеры

Пример 1. Обновление Series

import pandas as pd

s = pd.Series([10, 20, 30, 40], index=["a", "b", "c", "d"])
patch = pd.Series([200, 400], index=["b", "d"])
s.update(patch)
print(s)
a     10
b    200
c     30
d    400
dtype: int64

Пример 2. Обновление DataFrame

import pandas as pd

df = pd.DataFrame({"v": [1, 2, 3]}, index=["A", "B", "C"])
patch = pd.DataFrame({"v": [99]}, index=["B"])
df.update(patch)
print(df)
    v
A   1
B  99
C   3

Пример 3. NaN не перезаписывает

import pandas as pd
import numpy as np

s = pd.Series([1, 2, 3], index=["a", "b", "c"])
patch = pd.Series([np.nan, 200, np.nan], index=["a", "b", "c"])
s.update(patch)
print(s)
a      1.0
b    200.0
c      3.0
dtype: float64

Пример 4. overwrite=False — только заполнить NaN

import pandas as pd
import numpy as np

df = pd.DataFrame({"v": [1, np.nan, np.nan]})
patch = pd.DataFrame({"v": [99, 88, 77]})
df.update(patch, overwrite=False)
print(df)
      v
0   1.0
1  88.0
2  77.0

Пример 5. Калибровка датчиков

import pandas as pd

readings = pd.Series([100, 200, 300], index=["A0", "A1", "A2"])
calibrated = pd.Series([105, 210], index=["A0", "A1"])
readings.update(calibrated)
print(readings)
A0    105
A1    210
A2    300
dtype: int64

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.