Аргументы pd.Series.apply являются аргументами pd.series. - PullRequest
0 голосов
/ 25 февраля 2020

Я использую apply для ряда в кадре данных, чтобы использовать функцию с несколькими аргументами ключевых слов. Я использую функцию apply для первого ввода (называемого sk), а затем другие аргументы, которые я использую в других столбцах моего информационного кадра. Моя строка применения выглядит следующим образом:

Updates['Action'] = Updates['sk'].apply(RCCheck.nsamcheck, reportseries=Updates['reportseries'],rssd=Updates['rssd'], username=username, pw=password)

Я получаю сообщение об ошибке (функция запрашивает базу данных Oracle SQL):

DatabaseError: ORA-12801: error signaled in parallel query server P000
ORA-01722: invalid number

Однако, если я использую :

 Updates['Action'] = Updates['sk'].apply(RCCheck.nsamcheck, reportseries='abcd',rssd='1234', username=username, pw=password)

Это не проблема, но смысл использования ссылок pd.series заключается в том, чтобы он мог перемещаться вниз по каждой строке и возвращать выходные данные функции. Серия отчетов и rssd варьируются в зависимости от строки. На самом деле я не могу поделиться большим количеством кода, поэтому я извиняюсь за то, что не поделился всем.

Возможно ли то, что я пытаюсь сделать?

1 Ответ

0 голосов
/ 25 февраля 2020

Вместо применения функции к серии, примените ее ко всему фрейму данных.

def my_new_func(row):
    return RCCheck.nsamcheck(
        reportseries=row['reportseries'], rssd=row['rssd'], username=username, pw=password
)

Updates['Action'] = Updates.apply(my_new_func, axis=1)
...