要选择一个数据框行,请使用:
dataframe[dataframe['column_name'] == 'column_value']
我试图发现这段代码的性能,但是在查找行的上下文中找不到API在==
方法中定义的位置。
如何确定==
运算符的来源以确定上述代码性能?
我认为它位于https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html中,但不确定如何搜索?
答案 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中跟踪性能问题变得困难。