首页 > 解决方案 > Python 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.select(condis,a['iftrue'],default=" ")
print(df)

我一直试图将作为字符串接收的 a['check'] 参数转换为语句,所以这个,

df['Age'] a['check']

应该解析/编译为

df['Age'] ==30

有人可以给我关于如何实现这一目标的任何想法吗?也许我在这里遗漏了一些非常基本和简单的东西。

谢谢。

标签: pythonpython-3.xnumpy

解决方案


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

check = "==30"
age = "20"
print(eval(age+check))
>>> False

但不推荐,因为 eval 是一个函数,使用时要非常小心,因为它可以执行任意代码,会导致安全问题并且难以调试

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

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

推荐阅读