3 回答

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

TA貢獻1772條經驗 獲得超8個贊
在“py_expression_eval”庫的幫助下,我能夠在用戶定義的函數中完成算術運算。
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條經驗 獲得超5個贊
遲到的答案,但你可以做,和你想要的方式。如果你將后端引擎設置為Python(盡管我認為它相當慢)。似乎至少從Pandas v1.0開始就已經存在了。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
添加回答
舉報