Mic*_*nry 9 python function pandas multiple-arguments
假设我有一个像这样的数据框:
df = pd.DataFrame([['foo', 'x'], ['bar', 'y']], columns=['A', 'B'])
A B
0 foo x
1 bar y
Run Code Online (Sandbox Code Playgroud)
对于数据帧,我知道如何在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
Run Code Online (Sandbox Code Playgroud)
当数据框包含多个输入参数时,如何使用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
Run Code Online (Sandbox Code Playgroud)
我不是在寻找解决此特定示例的变通方法,而只是在一般情况下如何执行此操作。任何建议将不胜感激,谢谢。
这是现在的样子,你认为这将是,apply接受args并kwargs直接传递它们some_func。
df.apply(some_func, var1='DOG', axis=1)
Run Code Online (Sandbox Code Playgroud)
要么,
df.apply(some_func, args=('DOG', ), axis=1)
Run Code Online (Sandbox Code Playgroud)
0 foo-x-DOG
1 bar-y-DOG
dtype: object
Run Code Online (Sandbox Code Playgroud)
您应该使用向量化逻辑:
df['C'] = df['A'] + '-' + df['B'] + '-DOG'
Run Code Online (Sandbox Code Playgroud)
如果您确实想使用df.apply,这只是一个隐秘的循环,您可以简单地将您的参数作为附加参数提供:
def some_func(row, var1):
return '{0}-{1}-{2}'.format(row['A'], row['B'], var1)
df['C'] = df.apply(some_func, var1='DOG', axis=1)
Run Code Online (Sandbox Code Playgroud)
根据文档,df.apply接受位置参数和关键字参数。