假设我有一个这样的数据帧:

df = pd.DataFrame([['foo', 'x'], ['bar', 'y']], columns=['A', 'B'])


       A    B
0    foo    x
1    bar    y

我知道当涉及到数据帧时如何使用带apply的单参数函数,如下所示:
def some_func(row):
    return '{0}-{1}'.format(row['A'], row['B'])

df['C'] = df.apply(some_func, axis=1)

df


       A    B        C
0    foo    x    foo-x
1    bar    y    bar-y

当数据帧涉及多个输入参数时,如何在其上使用apply?以下是我想要的一个例子:
def some_func(row, var1):
    return '{0}-{1}-{2}'.format(row['A'], row['B'], var1)

df['C'] = df.apply(some_func(row, var1='DOG'), axis=1)

df


       A    B            C
0    foo    x    foo-x-DOG
1    bar    y    bar-y-DOG

我并不是在寻找解决这一特定例子的方法,而是在一般情况下如何做类似的事情。任何建议都会很感激,谢谢。

最佳答案

就像你想象的那样,apply接受argskwargs并将它们直接传递给some_func

df.apply(some_func, var1='DOG', axis=1)

或者,
df.apply(some_func, args=('DOG', ), axis=1)

0    foo-x-DOG
1    bar-y-DOG
dtype: object

关于python - 将具有多个参数的函数传递给DataFrame.apply,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49237663/

10-13 06:32