熊猫资源选择数据

时间:2018-07-31 09:43:19

标签: python performance pandas

要选择一个数据框行,请使用:

dataframe[dataframe['column_name'] == 'column_value']

我试图发现这段代码的性能,但是在查找行的上下文中找不到API在==方法中定义的位置。

如何确定==运算符的来源以确定上述代码性能?

我认为它位于https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html中,但不确定如何搜索?

1 个答案:

答案 0 :(得分:1)

首先,请注意==运算符在后台调用__eq__。在您的上下文中,它与pd.Series对象有关,而不与pd.DataFrame有关。所以这些是等效的:

res = pd.Series([1, 2, 3]) == 1
res = pd.Series([1, 2, 3]).__eq__(1)

然后您可以研究此方法:

pd.Series.__eq__
<function pandas.core.ops._comp_method_SERIES.<locals>.wrapper>

此外,您可以在_comp_method_SERIES中调查ops.py

def _comp_method_SERIES(op, name, str_rep, masker=False):
    """
    Wrapper function for Series arithmetic operations, to avoid
    code duplication.
    """
    ....

这应该使您入门。定义了实用程序功能,例如处理空值,空值表示熊猫为数据操作添加的值。优化的操作可能最终会调用C级算法,这可能会导致在纯Python中跟踪性能问题变得困难。