當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python pandas.eval用法及代碼示例


用法:

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.Seriespandas.DataFrame對象被支持並且行為與普通的 ol' Python 評估一樣。

參數

exprstr

要評估的表達式。該字符串不能包含任何 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_dictdict 或 None,可選

局部變量字典,默認取自locals()。

global_dictdict 或 None,可選

全局變量字典,默認取自globals()。

resolversdict-like 或無列表,可選

實現 __getitem__ 特殊方法的對象列表,可用於注入額外的命名空間集合以用於變量查找。例如,這在 query() 方法中用於注入引用其各自 DataFrame 實例屬性的 DataFrame.indexDataFrame.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

相關用法


注:本文由純淨天空篩選整理自pandas.pydata.org大神的英文原創作品 pandas.eval。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。