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.