我正在使用Python 3.4在map()中应用lambda函数来创建新变量。
要映射的输入序列是一个dicts列表。 lambda函数将在单独的配置文件中定义。为了尽量减少键入,我想在lambda中使用eval(),如下所示:
dat = [{'a':1, 'b':2}, {'a':2,'b':1}]
a_transformation = 'a > 1'
temp = map(lambda x: eval(a_transformation,x), dat)
结果如预期,但输入序列中的每个项目都会更改为global()的输出....
我可以毫无问题地与Pandas做类似的事情:
import pandas
dat = [{'a':1, 'b':2}, {'a':2,'b':1}]
dat_pandas = pandas.DataFrame(a)
a_transformation = 'a > 1'
temp = dat_pandas.eval(a_transformation, engine='python')
但我宁愿不必使用熊猫。
有什么想法吗?
谢谢!