在 Python 3.11 中:要将方括号运算符应用于对象,应实现该对象的
__getitem__
方法。
在 Python 的
pandas
模块中,可以将方括号应用于通过 DataFrame
方法从 groupby()
返回的对象,例如tips.groupby("sex")["total_bill"].count()
。 (示例取自本教程。)
但是,
__getitem__
' pandas
对象的 API 参考中没有列出
GroupBy
方法。怎么会? pandas
GroupBy
对象的方括号运算符是如何实现的?
有时我使用如下代码来查看源代码(如果可用):
import inspect
import pandas
groupby_obj = pandas.DataFrame().groupby(level=0)
print(f'{type(groupby_obj)=}\n{"-"*80}')
assert '__getitem__' in dir(groupby_obj)
code = inspect.getsource(groupby_obj.__getitem__)
print(code)
或者更确切地说,我只需在函数之后
键入
??
即可查看 Jupyter Notebook 中的代码。不管怎样,你绝对可以在 GroupBy 对象中看到__getitem__
并阅读它的源代码。
正如在 pandas 的 GroupBy API 参考中提到的
__getitem__
一样,我认为 这部分关于 GroupBy 中的选择的部分是为了解释在这种情况下选择是如何工作的。