Python Numpy Выбор оператора Dynami c из строки - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь сделать следующее,

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)

Я застрял при попытке преобразовать параметр ['check'], полученный в виде строки, в оператор, так что

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

следует разрешить / скомпилировать в

df['Age'] ==30

Может ли кто-нибудь дать мне какие-нибудь идеи о том, как этого добиться? Может быть, я упускаю что-то очень простое c и простое здесь.

Спасибо.

1 Ответ

0 голосов
/ 17 марта 2020

Вы можете использовать eval для преобразования строки в условие:

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

Но это не рекомендуется, потому что eval - это функция, которую нужно использовать очень осторожно, так как она может выполнять произвольный код, это вызывает проблемы с безопасностью и трудно debug

более подходящим решением было бы, например, иметь аргумент для оператора сравнения и аргумент для параметра сравнения:

check_op = np.equal
check_arg = 30
print(check_op(check_arg, 20)
>>> False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...