用法:
DataFrame.query(expr, inplace=False, **kwargs)
使用布尔表达式查询 DataFrame 的列。
- expr:str
要评估的查询字符串。
您可以通过在变量前面加上“@”字符来引用环境中的变量,例如
@a + b
。您可以通过将它们括在反引号中来引用不是有效 Python 变量名的列名。因此,包含空格或标点符号(下划线除外)或以数字开头的列名必须用反引号括起来。 (例如,名为“面积 (cm^2)”的列将被引用为
`Area (cm^2)`
)。不能使用作为 Python 关键字的列名(如 “list”, “for”, “import” 等)。例如,如果您的一列称为
a a
并且您想将其与b
相加,则您的查询应该是`a a` + b
。- inplace:bool
查询是否应就地修改数据或返回修改后的副本。
- **kwargs:
有关
DataFrame.query()
接受的关键字参数的完整详细信息,请参阅eval()
的文档。
- DataFrame 或无
DataFrame 由提供的查询表达式产生,如果
inplace=True
则为 None。
参数:
返回:
注意:
该表达式的评估结果首先传递给
DataFrame.loc
,如果由于多维键(例如DataFrame)而失败,则结果将传递给DataFrame.__getitem__()
。此方法使用顶级
eval()
函数来评估传递的查询。pandas.DataFrame.query方法默认使用稍微修改的 Python 语法。例如,
&
和|
(按位)运算符具有其布尔表兄弟的优先级,and
和or
.这是语法上有效的 Python,但语义不同。您可以通过传递关键字参数
parser='python'
来更改表达式的语义。这强制执行与 Python 空间中的求值相同的语义。同样,您可以传递engine='python'
以使用 Python 本身作为后端来评估表达式。不建议这样做,因为与使用numexpr
作为引擎相比效率低下。DataFrame
实例的DataFrame.index
和DataFrame.columns
属性默认放置在查询命名空间中,这允许您将框架的索引和列都视为框架中的列。标识符index
用于帧索引;您还可以使用索引的名称在查询中识别它。请注意,Python 关键字不能用作标识符。有关更多详细信息和示例,请参阅索引中的
query
文档。反引号引用的变量
反引号引用的变量被解析为文字 Python 代码,并在内部转换为 Python 有效标识符。这会导致以下问题。
在解析反引号引号字符串中的一些不允许的字符时,将替换为允许作为 Python 标识符的字符串。这些字符包括 Python 中的所有运算符、空格字符、问号、感叹号、美元符号和欧元符号。对于超出 ASCII 范围 (U+0001..U+007F) 的其他字符以及 PEP 3131 中未进一步指定的字符,查询解析器将引发错误。这不包括不同于空格字符的空格,还包括主题标签(因为它用于评论)和反引号本身(反引号也不能被转义)。
在特殊情况下,在反引号周围形成一对的引号会使解析器感到困惑。例如,
`it's` > `that's`
会引发错误,因为它会形成一个带引号的字符串 ('s > `that'
),其中包含一个反引号。另请参阅有关词法分析的 Python 文档 (https://docs.python.org/3/reference/lexical_analysis.html) 以及
pandas.core.computation.parsing
中的源代码。例子:
>>> df = pd.DataFrame({'A': range(1, 6), ... 'B': range(10, 0, -2), ... 'C C': range(10, 5, -1)}) >>> df A B C C 0 1 10 10 1 2 8 9 2 3 6 8 3 4 4 7 4 5 2 6 >>> df.query('A > B') A B C C 4 5 2 6
前面的表达式等价于
>>> df[df.A > df.B] A B C C 4 5 2 6
对于名称中带有空格的列,您可以使用反引号。
>>> df.query('B == `C C`') A B C C 0 1 10 10
前面的表达式等价于
>>> df[df.B == df['C C']] A B C C 0 1 10 10
相关用法
- Python pandas.DataFrame.quantile用法及代码示例
- Python pandas.DataFrame.ewm用法及代码示例
- Python pandas.DataFrame.dot用法及代码示例
- Python pandas.DataFrame.apply用法及代码示例
- Python pandas.DataFrame.combine_first用法及代码示例
- Python pandas.DataFrame.cumsum用法及代码示例
- Python pandas.DataFrame.rename用法及代码示例
- Python pandas.DataFrame.to_numpy用法及代码示例
- Python pandas.DataFrame.dtypes用法及代码示例
- Python pandas.DataFrame.cummin用法及代码示例
- Python pandas.DataFrame.truncate用法及代码示例
- Python pandas.DataFrame.sparse.from_spmatrix用法及代码示例
- Python pandas.DataFrame.add_prefix用法及代码示例
- Python pandas.DataFrame.to_json用法及代码示例
- Python pandas.DataFrame.convert_dtypes用法及代码示例
- Python pandas.DataFrame.assign用法及代码示例
- Python pandas.DataFrame.radd用法及代码示例
- Python pandas.DataFrame.add用法及代码示例
- Python pandas.DataFrame.drop用法及代码示例
- Python pandas.DataFrame.rename_axis用法及代码示例
注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.query。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。