Панды: применить функцию со столбцами и переменную в качестве аргумента - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь применить к фрейму данных функцию, которая имеет более одного аргумента, из которых два должны быть назначены на строки фрейма данных, а один - переменная (простое число).

Вариант из аналогичного потока работает для строк: (все функции упрощены по сравнению с моими исходными)

import pandas as pd

dict={'a':[-2,5,4,-6], 'b':[4,4,5,-8]}

df=pd.DataFrame (dict)
print(df)

def DummyFunction (row):
    return row['a']*row['b']
#this works:
df['Dummy1']=df.apply(DummyFunction, axis=1)

Но как я могу применить следующий вариант, где моя функция принимает дополнительный аргумент (фиксированная переменная)? Кажется, я не могу передать его в метод apply:

def DummyFunction2(row, threshold):
    return row['a']*row['b']*threshold
# where threshold will be assigned to a number?
# I don't seem to find a viable option to fill the row argument below:
# df['Dummy2']=df.apply(DummyFunction2(row,1000), axis=1)

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 28 апреля 2018

Вы можете передать дополнительную переменную напрямую как именованный аргумент pd.DataFrame.apply:

def DummyFunction2(row, threshold):
    return row['a']*row['b']*threshold

df['Dummy2'] = df.apply(DummyFunction2, threshold=2, axis=1)
...