Как применить функцию, которая включает две переменные в python - проблема позиционных аргументов - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь определить переменную --yieldgift--, используя значения двух других переменных -- yieldposter и yieldgiftbox.Для этого я использовал условный язык (см. Код ниже).Сейчас я пытаюсь применить функцию к новой переменной --fieldgift--, но получаю следующую ошибку: ('yieldgift() takes 0 positional arguments but 1 was given', 'occurred at index yieldposter')

Мой фрейм данных называется --deposit--.Вот что я сделал, чтобы определить переменную --yieldgift--, после чего я попытался применить функцию.

def yieldgift():
    if deposit.yieldposter == 'Y' and deposit.yieldgiftbox == 'Y':
        return 'both'
    elif deposit.yieldposter == 'Y':
        return 'poster'
    elif deposit.yieldgiftbox == 'Y':
        return 'box'

deposit['yieldgift'] = deposit[['yieldposter', 'yieldgiftbox']].apply(yieldgift)

Я получаю следующую ошибку:

('yieldgift() takes 0 positional arguments but 1 was given', 'occurred at index yieldposter')```

Ответы [ 2 ]

0 голосов
/ 27 июня 2019

Это в конечном итоге то, что я использовал, который работал:

deposit['yieldgift'] = deposit.apply(lambda x: yieldgift(x['yieldposter'], x['yieldgiftbox']), axis=1)
0 голосов
/ 25 июня 2019

Функция, переданная в apply, должна принимать аргумент: строку или столбец, к которому вы хотите применить ее.

...