用法:
pandas.eval(expr, parser='pandas', engine=None, truediv=NoDefault.no_default, local_dict=None, global_dict=None, resolvers=(), level=0, target=None, inplace=False)
使用各種後端將 Python 表達式評估為字符串。
支持以下算術運算:
+
,-
,*
,/
,**
,%
,//
(僅限 Python 引擎)以及以下布爾運算:|
(或者),&
(和),和~
(不是)。此外,'pandas'
解析器允許使用and
,or
, 和not
與相應的位運算符具有相同的語義。pandas.Series和pandas.DataFrame對象被支持並且行為與普通的 ol' Python 評估一樣。- expr:str
要評估的表達式。該字符串不能包含任何 Python 語句,隻能包含 Python 表達式。
- parser:{‘pandas’, ‘python’},默認 ‘pandas’
用於從表達式構造語法樹的解析器。
'pandas'
的默認值解析代碼與標準 Python 略有不同。或者,您可以使用'python'
解析器解析表達式以保留嚴格的 Python 語義。有關更多詳細信息,請參閱增強性能文檔。- engine:{‘python’, ‘numexpr’},默認 ‘numexpr’
用於評估表達式的引擎。支持的引擎是
無:嘗試使用
numexpr
,回退到python
'numexpr'
:此默認引擎使用評估 Pandas 對象numexpr 用於在具有大幀的複雜表達式中大幅加速。
'python'
:執行操作就像您在頂部有eval
'd級別的Python。這個引擎通常沒那麽有用。
將來可能會提供更多後端。
- truediv:布爾型,可選
是否使用真正的除法,例如 Python >= 3。
- local_dict:dict 或 None,可選
局部變量字典,默認取自locals()。
- global_dict:dict 或 None,可選
全局變量字典,默認取自globals()。
- resolvers:dict-like 或無列表,可選
實現
__getitem__
特殊方法的對象列表,可用於注入額外的命名空間集合以用於變量查找。例如,這在query()
方法中用於注入引用其各自DataFrame
實例屬性的DataFrame.index
和DataFrame.columns
變量。- level:整數,可選
要遍曆並添加到當前範圍的先前堆棧幀的數量。大多數用戶不需要更改此參數。
- target:對象,可選,默認無
這是分配的目標對象。當表達式中有變量賦值時使用它。如果是這樣,那麽
target
必須支持使用字符串鍵進行項目分配,並且如果要返回副本,它還必須支持.copy()
。- inplace:布爾值,默認為 False
如果提供了
target
,並且表達式改變了target
,是否就地修改target
。否則,返回帶有突變的target
的副本。
- ndarray、數值標量、DataFrame、Series 或 None
評估給定代碼的完成值或 None 如果
inplace=True
。
- ValueError
有很多情況可以引發這樣的錯誤:
target=None
,但表達式是多行的。表達式是多行的,但並非所有表達式都有項目分配。這種安排的一個例子是:
a = b + 1 a + 2
在這裏,不同的行上有表達式,使其成為多行,但最後一行沒有分配給
a + 2
輸出的變量。inplace=True
,但表達式缺少項目分配。提供了項目分配,但
target
不支持字符串項目分配。提供了項目分配和
inplace=False
,但target
不支持.copy()
方法
參數:
返回:
拋出:
注意:
算術
%
操作中涉及的任何對象的dtype
都遞歸地轉換為float64
。有關更多詳細信息,請參閱增強性能文檔。
例子:
>>> df = pd.DataFrame({"animal":["dog", "pig"], "age":[10, 20]}) >>> df animal age 0 dog 10 1 pig 20
我們可以使用
pd.eval
添加一個新列:>>> pd.eval("double_age = df.age * 2", target=df) animal age double_age 0 dog 10 20 1 pig 20 40
相關用法
- Python pandas.eval()用法及代碼示例
- Python pandas.errors.DtypeWarning用法及代碼示例
- Python pandas.errors.DuplicateLabelError用法及代碼示例
- Python pandas.errors.ParserWarning用法及代碼示例
- Python pandas.arrays.IntervalArray.is_empty用法及代碼示例
- Python pandas.DataFrame.ewm用法及代碼示例
- Python pandas.api.types.is_timedelta64_ns_dtype用法及代碼示例
- Python pandas.DataFrame.dot用法及代碼示例
- Python pandas.DataFrame.apply用法及代碼示例
- Python pandas.DataFrame.combine_first用法及代碼示例
- Python pandas.read_pickle用法及代碼示例
- Python pandas.Index.value_counts用法及代碼示例
- Python pandas.DatetimeTZDtype用法及代碼示例
- Python pandas.DataFrame.cumsum用法及代碼示例
- Python pandas.Interval.is_empty用法及代碼示例
- Python pandas.api.indexers.FixedForwardWindowIndexer用法及代碼示例
- Python pandas.core.resample.Resampler.nearest用法及代碼示例
- Python pandas.Series.add_prefix用法及代碼示例
- Python pandas.Period.strftime用法及代碼示例
- Python pandas.Series.map用法及代碼示例
注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.eval。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。