假设我有一个这样的数据帧:
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
接受args
和kwargs
并将它们直接传递给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/