我有一个如下所示的程序,当每个函数只有一个参数时,它可以正常工作。
import pandas as pd
df = pd.DataFrame([1])
df.columns = ['number']
def add_one(x):
return x+1
def add_two(x):
return x+2
class Functions:
add_one = "add_one"
add_two = "add_two"
def main(df, func_name):
return df.number.apply(eval(func_name))
func_name = Functions.add_one
main(df, func_name)
但是我向每个函数添加了另一个参数,它返回错误:TypeError:'int'对象不可调用。如何使用两个参数使其工作?
import pandas as pd
df = pd.DataFrame([1])
df.columns = ['number']
def add_one(x, a):
return x+1+a
def add_two(x, a):
return x+2+a
class Functions:
add_one = "add_one"
add_two = "add_two"
def main(df, func_name):
a = 1
return df.number.apply(eval(func_name + '(x, a)'))
func_name = Functions.add_one
main(df, func_name)
您可以使用.apply
args
分别将参数传递给parameter函数,如下所示
import pandas as pd
df = pd.DataFrame([1])
df.columns = ['number']
def add_one(x, a):
return x+1+a
def add_two(x, a):
return x+2+a
class Functions:
add_one = "add_one"
add_two = "add_two"
def main(df, func_name):
a = 1
return df.number.apply(eval(func_name), args=(a,))
func_name = Functions.add_one
main(df, func_name)
输出:
0 3
Name: number, dtype: int64
希望这会有所帮助!