Python 向应用于pd.df的eval函数添加一个参数
我有一个如下的程序,当每个函数只有一个参数时,它工作得很好Python 向应用于pd.df的eval函数添加一个参数,python,pandas,dataframe,apply,eval,Python,Pandas,Dataframe,Apply,Eval,我有一个如下的程序,当每个函数只有一个参数时,它工作得很好 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_nam
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' object is not callable.
如何使用两个参数使其工作
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)
您可以使用
args
将参数分别传递给。apply
函数,如下所示
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
希望这有帮助 您可以将参数分别传递给
。使用args
应用函数,如下所示
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
希望这有帮助