DataFrame.assign()

Метод assign() возвращает копию DataFrame с одним или несколькими новыми столбцами. Удобен для построения цепочек преобразований (method chaining), так как не модифицирует исходный объект.

Сигнатура

DataFrame.assign(**kwargs)

Параметры

  • **kwargs — пары имя_столбца=значение. Значение может быть скаляром, Series, массивом или вызываемым объектом, принимающим текущий DataFrame.

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

Новый DataFrame с добавленными столбцами.

Примеры

Пример 1. Простое добавление столбца

import pandas as pd

df = pd.DataFrame({"a": [1, 2, 3]})
print(df.assign(b=[10, 20, 30]))
   a   b
0  1  10
1  2  20
2  3  30

Пример 2. Вычисление на основе существующих столбцов

Расчёт мощности по току и напряжению с Arduino-датчика:

import pandas as pd

df = pd.DataFrame({"U": [5.0, 4.8, 5.1], "I": [0.5, 0.6, 0.4]})
print(df.assign(P=lambda d: d["U"] * d["I"]))
     U    I     P
0  5.0  0.5  2.50
1  4.8  0.6  2.88
2  5.1  0.4  2.04

Пример 3. Несколько столбцов одновременно

import pandas as pd

df = pd.DataFrame({"x": [1, 2, 3]})
print(df.assign(x2=lambda d: d["x"] ** 2, x3=lambda d: d["x"] ** 3))
   x  x2  x3
0  1   1   1
1  2   4   8
2  3   9  27

Пример 4. Цепочка с другими методами

import pandas as pd

df = pd.DataFrame({"t": [22.0, 22.5, 23.1, 22.8]})
result = df.assign(t_f=lambda d: d["t"] * 9 / 5 + 32).round(2)
print(result)
      t   t_f
0  22.0  71.6
1  22.5  72.5
2  23.1  73.58
3  22.8  73.04

Пример 5. Перезапись существующего столбца

import pandas as pd

df = pd.DataFrame({"a": [1, 2, 3]})
print(df.assign(a=lambda d: d["a"] * 100))
     a
0  100
1  200
2  300

См. также

Примечание

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

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