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() теперь позиционные и ключевые слова Аргументы и ссылка на документацию выше теперь отражает это и показывает, как включить любой тип аргумента.

1295   4  

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)))

но я думаю, что с помощью partial is лучше.


обратите внимание, что новые версии панды 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,))

действия:

  1. создать фрейм данных
  2. создать функцию
  3. используйте именованные аргументы функции в инструкции 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

    Ничего не найдено.