DataFrame.multiply() / Series.multiply()

Метод multiply() (синоним — mul()) выполняет поэлементное умножение с гибким управлением: поддерживает скаляр, Series, DataFrame, выравнивание по оси и заполнение пропусков. Аналог оператора *, но с параметрами.

Сигнатура

DataFrame.multiply(other, axis='columns', level=None, fill_value=None)
Series.multiply(other, level=None, fill_value=None, axis=0)

Параметры

  • other — скаляр, Series, DataFrame или массив.

  • axis — 'columns' (0) или 'index' (1) — по какой оси выравнивать при операции DataFrame * Series.

  • level — уровень MultiIndex для выравнивания.

  • fill_value — чем заменить отсутствующее значение до операции (вместо обычного NaN-распространения).

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

Объект того же типа с результатом умножения.

Примеры

Пример 1. Умножение на скаляр

Перевод вольт в милливольты:

import pandas as pd

volts = pd.Series([3.3, 5.0, 1.8])
print(volts.multiply(1000))
0    3300.0
1    5000.0
2    1800.0
dtype: float64

Пример 2. Умножение DataFrame на Series по столбцам

Калибровочные коэффициенты для каждого датчика:

import pandas as pd

df = pd.DataFrame({"s_a": [100, 200, 300], "s_b": [50, 60, 70]})
k  = pd.Series({"s_a": 1.1, "s_b": 0.95})
print(df.multiply(k, axis="columns"))
     s_a    s_b
0  110.0  47.50
1  220.0  57.00
2  330.0  66.50

Пример 3. Умножение по строкам (axis=“index“)

import pandas as pd

df = pd.DataFrame({"a": [1, 2, 3], "b": [10, 20, 30]})
weights = pd.Series([1, 0.5, 2])
print(df.multiply(weights, axis="index"))
     a     b
0  1.0  10.0
1  1.0  10.0
2  6.0  60.0

Пример 4. fill_value для несовпадающих индексов

import pandas as pd

a = pd.Series([2, 4, 6], index=["x", "y", "z"])
b = pd.Series([10, 20],  index=["x", "y"])
print(a.multiply(b, fill_value=1))
x    20.0
y    80.0
z     6.0
dtype: float64

Пример 5. multiply vs оператор *

import pandas as pd

s = pd.Series([1, 2, 3])
print((s * 10).tolist())
print(s.multiply(10).tolist())
[10, 20, 30]
[10, 20, 30]

См. также

Примечание

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

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