3 回答

TA貢獻1874條經(jīng)驗 獲得超12個贊
你不能
DataFrame.eval
僅支持一組有限的數(shù)學(xué)運算
除左移位 (<<) 和右移位 (>>) 運算符外的算術(shù)運算,例如,
df + 2 * pi / s ** 4 % 42 - the_golden_ratio
數(shù)學(xué)函數(shù):sin,cos,exp,log,expm1,log1p,sqrt,sinh,cosh,tanh,arcsin,arccos,arctan,arccosh,arcsinh,arctanh,abs,arctan2和log10。
如果它不在該列表中,則不能將其稱為“數(shù)學(xué)函數(shù)以外的函數(shù)調(diào)用[不允許語法]”
話雖如此,也許可以在更基本的操作方面實現(xiàn)其中一些功能。在這里,我實現(xiàn)了一個等效于 np.sign
的 eval
。但是IMO混淆了操作太多,并不是很有用,所以真的你需要遠離eval

TA貢獻1772條經(jīng)驗 獲得超8個贊
在“py_expression_eval”庫的幫助下,我能夠在用戶定義的函數(shù)中完成算術(shù)運算。
from py_expression_eval import Parser
parser = Parser()
dct = {'Q1':df['Q1'],'Q2':df['Q2'],'max':max1,'round':getround}
df['check']=parser.parse('round(Q1/Q2)').evaluate(dct)
庫源:https://github.com/Axiacore/py-expression-eval
希望這有助于他人。

TA貢獻1875條經(jīng)驗 獲得超5個贊
遲到的答案,但你可以做,和你想要的方式。如果你將后端引擎設(shè)置為Python(盡管我認(rèn)為它相當(dāng)慢)。似乎至少從Pandas v1.0開始就已經(jīng)存在了。roundminmaxeval
df.eval('TTR = TT.round(2)', engine='python', inplace=True)
df.eval('TT_min = TT.min()', engine='python', inplace=True)
df.eval('TT_max = TT.max()', engine='python', inplace=True)
df
對于 和 操作,您必須弄清楚其他方法(例如,使用 )。floorceilapply
添加回答
舉報