Метод assign
Метод assign применяется к DataFrame
и возвращает новую таблицу с добавленными столбцами.
В качестве аргументов передаются именованные параметры,
где имя - это название нового столбца, а значение -
данные для него (список, Series или функция).
Исходная таблица при этом не изменяется.
Синтаксис
df.assign(**kwargs)
Пример
Давайте добавим новый столбец 'c' с удвоенными значениями столбца 'a':
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.assign(c=df['a'] * 2)
print(res)
Результат выполнения кода:
a b c
0 1 10 2
1 2 20 4
2 3 30 6
3 4 40 8
4 5 50 10
Пример
Можно добавить сразу несколько столбцов:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.assign(
c=df['a'] * 2,
d=df['b'] + 5
)
print(res)
Результат выполнения кода:
a b c d
0 1 10 2 15
1 2 20 4 25
2 3 30 6 35
3 4 40 8 45
4 5 50 10 55
Пример
В качестве значения можно передавать функцию,
которая принимает DataFrame и возвращает Series:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.assign(c=lambda x: x['a'] + x['b'])
print(res)
Результат выполнения кода:
a b c
0 1 10 11
1 2 20 22
2 3 30 33
3 4 40 44
4 5 50 55
Пример
Метод assign позволяет использовать результат
предыдущего вычисления в следующем столбце:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.assign(
c=lambda x: x['a'] * 2,
d=lambda x: x['c'] + 5
)
print(res)
Результат выполнения кода:
a b c d
0 1 10 2 7
1 2 20 4 9
2 3 30 6 11
3 4 40 8 13
4 5 50 10 15
Пример
Метод assign не изменяет исходную таблицу:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
df.assign(c=df['a'] * 2)
print(df)
Результат выполнения кода:
a b
0 1 10
1 2 20
2 3 30
3 4 40
4 5 50