python pandas: применить функцию с аргументами к ряду. Обновить

Я хотел бы применить функцию с аргументом к серии pandas: я нашел два разных решения SO:

python pandas: применить функцию с аргументами к ряду

а также

Передача нескольких аргументов для применения (Python)

оба они полагаются на использование functool.partial и они работают абсолютно нормально. Кстати, новая версия Pandas поддерживает несколько аргументов: в любом случае я не понимаю, как это работает. Пример:

 a=pd.DataFrame({'x':[1,2],'y':[10,20]}) a['x'].apply(lambda x,y: x+y, args=(100)) 

Он выходит с:

 TypeError: <lambda>() argument after * must be a sequence, not int 

One Solution collect form web for “python pandas: применить функцию с аргументами к ряду. Обновить”

TypeError говорит, что вы передали неправильный тип функции lambda x + y . Он ожидает, что args будет последовательностью, но он получил int . Вы могли подумать, что (100) был кортежем (последовательность), но в python это запятая, которая делает кортеж:

 In [10]: type((100)) Out[10]: int In [11]: type((100,)) Out[11]: tuple 

Поэтому измените свою последнюю строку на

 In [12]: a['x'].apply(lambda x, y: x + y, args=(100,)) Out[12]: 0 101 1 102 Name: x, dtype: int64 
  • Есть ли в Pandas питонический способ сделать таблицу непредвиденных обстоятельств?
  • Pandas группирует и суммирует два столбца
  • Добавление моего собственного атрибута описания в Pandas DataFrame
  • Есть ли способ скопировать только структуру (а не данные) Pandas DataFrame?
  • Использование TimeGrouper '1M' для группировки и суммирования по столбцам - это испортить мой индекс даты pandas python
  • pyspark: ValueError: некоторые типы не могут быть определены после вывода
  • Преобразование длинных целых чисел в строки в пандах (чтобы избежать научной нотации)
  • concat pandas DataFrame по индексам таймсерий
  • Python - лучший язык программирования в мире.