python pandas: применение функции с аргументами к ряду
Я хочу применить функцию с аргументами к серии в python pandas:
x = my_series.apply(my_function, more_arguments_1)
y = my_series.apply(my_function, more_arguments_2)
...
The документация описывает поддержку метода apply, но он не принимает никаких аргументов. Есть ли другой метод, который принимает аргументы? Кроме того, мне не хватает простого обходного пути?
Обновление (Октябрь 2017): обратите внимание, что поскольку этот вопрос был первоначально задан, что панды apply() теперь позиционные и ключевые слова Аргументы и ссылка на документацию выше теперь отражает это и показывает, как включить любой тип аргумента.
4 ответов:
документация ясно объясняет это. Метод apply принимает функцию python, которая должна иметь один параметр. Если вы хотите передать больше параметров, вы должны использовать
functools.partialкак предложил Джоэл Корнетт в своем комментарии.пример:
>>> import functools >>> import operator >>> add_3 = functools.partial(operator.add,3) >>> add_3(2) 5 >>> add_3(7) 10вы также можете передавать аргументы ключевых слов с помощью
partial.другой способ-создать лямбду:
my_series.apply((lambda x: your_func(a,b,c,d,...,x)))но я думаю, что с помощью
partialis лучше.
обратите внимание, что новые версии панды do позволяет передавать дополнительные аргументы (см. новая документация). Так что теперь вы можете сделать:
my_series.apply(your_function, args=(2,3,4), extra_kw=1)позиционные аргументы добавляются после элемент серии.
Series.apply(func, convert_dtype=True, args=(), **kwds) args : tuple x = my_series.apply(my_function, args = (arg1,))
действия:
- создать фрейм данных
- создать функцию
- используйте именованные аргументы функции в инструкции apply.
пример
x=pd.DataFrame([1,2,3,4]) def add(i1, i2): return i1+i2 x.apply(add,i2=9)результатом этого примера является то, что каждое число в фрейме данных будет добавлено к числу 9.
0 0 10 1 11 2 12 3 13объяснение:
функция "добавить" имеет два параметра: i1, i2. Первый параметр будет значением в фрейме данных, а второй-это то, что мы передаем в функцию "применить". В этом случае мы передаем "9" в функцию apply, используя аргумент ключевого слова "i2".
вы можете передать любое количество аргументов в функцию, которая
applyвызывает через любые безымянные аргументы, переданные как кортеж вargsпараметр, или через другие аргументы ключевого слова внутренне захваченные как словарь
Comments