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.