Метод eval
Метод eval применяется к DataFrame
и позволяет выполнять строковые выражения, используя
столбцы таблицы как переменные. Первым параметром
передаётся строка с выражением, вторым параметром
можно указать локальные или глобальные переменные.
Метод возвращает новый объект DataFrame
или Series с результатом вычислений.
Синтаксис
df.eval(expr[, inplace=False])
Пример
Давайте создадим новый столбец, сложив значения из существующих столбцов:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
df['c'] = df.eval('a + b')
print(df)
Результат выполнения кода:
a b c
0 1 10 11
1 2 20 22
2 3 30 33
3 4 40 44
4 5 50 55
Пример
Выполним более сложное выражение с умножением и вычитанием:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.eval('a * 2 + b / 10')
print(res)
Результат выполнения кода:
0 3.0
1 6.0
2 9.0
3 12.0
4 15.0
dtype: float64
Пример
Используем локальные переменные в выражении.
Передадим их через параметр local_dict:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
multiplier = 3
res = df.eval('a * @multiplier + b')
print(res)
Результат выполнения кода:
0 13
1 26
2 39
3 52
4 65
dtype: int64
Пример
Изменим существующий столбец, используя параметр
inplace для сохранения результата:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
df.eval('a = a * 2', inplace=True)
print(df)
Результат выполнения кода:
a b
0 2 10
1 4 20
2 6 30
3 8 40
4 10 50