07 Июл 2023
2 мин
650

Применение функции к двум столбцам Pandas DataFrame

Одной из распространенных задач при работе с данными в Pandas является применение определенной функции к одному или нескольким столбцам DataFrame. Иногда

Содержание

Одной из распространенных задач при работе с данными в Pandas является применение определенной функции к одному или нескольким столбцам DataFrame. Иногда возникает необходимость применить функцию, которая принимает два аргумента, к двум столбцам DataFrame, и создать новый столбец на основе полученных результатов.

В качестве примера рассмотрим следующий DataFrame:

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6],
})

Пусть есть функция, которая принимает два аргумента и возвращает их сумму:

def add_two_numbers(x, y):
    return x + y

Требуется применить эту функцию к столбцам ‘A’ и ‘B’ и сохранить результат в новом столбце ‘C’.

Самым простым и эффективным способом сделать это является использование метода apply DataFrame. Однако, при попытке применить функцию напрямую к двум столбцам, возникает ошибка о несоответствии количества аргументов:

df['C'] = df[['A', 'B']].apply(add_two_numbers)
# TypeError: ("add_two_numbers() missing 1 required positional argument: 'y'", 'occurred at index A')

Это происходит потому, что метод apply передает каждый столбец в функцию как отдельный аргумент, а функция ожидает два аргумента.

Чтобы решить эту проблему, можно использовать параметр axis метода apply и установить его значение равным 1. Это означает, что функция будет применяться к каждой строке DataFrame, а не к каждому столбцу:

df['C'] = df.apply(lambda row: add_two_numbers(row['A'], row['B']), axis=1)

Теперь новый столбец ‘C’ будет содержать сумму значений столбцов ‘A’ и ‘B’:

   A  B  C
0  1  4  5
1  2  5  7
2  3  6  9

Таким образом, при применении функций к нескольким столбцам Pandas DataFrame, следует учитывать, как функция ожидает получать свои аргументы, и соответствующим образом использовать параметр axis метода apply.

Добавить комментарий