Python Numpy从字符串中选择动态语句

Python Numpy从字符串中选择动态语句,python,python-3.x,numpy,Python,Python 3.x,Numpy,我试着做以下几件事 import pandas as pd import numpy as np df = pd.DataFrame({'Name': ('Harry','Sally','Megan'), 'Age': (30, 31,'NN')}) a={'target':"Age2",'check':"==30",'iftrue':["Is"]} condis=[ df['Age'] a['check'] ] df[a['target']]= np.s

我试着做以下几件事

import pandas as pd
import numpy as np

df = pd.DataFrame({'Name': ('Harry','Sally','Megan'), 'Age': (30, 31,'NN')})

a={'target':"Age2",'check':"==30",'iftrue':["Is"]}

condis=[
        df['Age'] a['check']
        ]

df[a['target']]= np.select(condis,a['iftrue'],default=" ")
print(df)
我一直在尝试将作为字符串接收的a['check']参数转换为语句

df['Age'] a['check']
应解析/编译为

df['Age'] ==30
有人能告诉我如何实现这一点吗?也许我在这里遗漏了一些非常基本和简单的东西


谢谢。

您可以使用eval将字符串转换为条件:

check = "==30"
age = "20"
print(eval(age+check))
>>> False
但不推荐使用eval,因为eval是一个需要非常小心使用的函数,因为它可以执行任意代码,这会导致安全问题,并且很难调试

例如,一个更合适的解决方案是使用一个参数作为比较运算符,一个参数作为比较参数:

check_op = np.equal
check_arg = 30
print(check_op(check_arg, 20)
>>> False

您的代码具有无效的python语法。请您再检查一遍好吗?这正是因为问题陈述,它没有解析为陈述。您可以在那里使用一个
eval
,这是一种粗俗和糟糕的风格,或者使用一个适当的
lambda