我已阅读此文档:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html
您可以使用类似的语法df.loc[df['shield'] > 6, ['max_speed']]。
我尝试使用 Github 并发现:
假设您有一个pandas.core.frame.DataFrame对象,即一个DataFrame被调用的对象df。
的类型df.loc是pandas.core.indexing._LocIndexer。
尽管如此,我还是无法理清这些问题:
您如何使 Python 函数/类接受上述语法?
pandas.core.frame.DataFrame属性在源代码中的哪里self.loc定义?
(1)你如何使一个类接受普遍认为语法是通过实施__getitem__(https://docs.python.org/3/reference/datamodel.html#object。的GetItem),这是操作符重载的例子。这允许该类的对象被索引[]。例如:
class get_item_example(object):
def __getitem__(self, key):
print(key)
Run Code Online (Sandbox Code Playgroud)
试试看:
>>> gi = get_item_example()
>>> gi['a']
a
>>> gi[['a','b','c']]
['a', 'b', 'c']
>>> gi['a','b','c']
('a', 'b', 'c')
Run Code Online (Sandbox Code Playgroud)
在df.loc[df['shield'] > 6, ['max_speed']]发生的情况是,传递给的键__getitem__是一个包含由返回的熊猫系列df['shield'] > 6和单个项目列表的元组['max_speed']。
(2) 在pandas 源码中,pandas.core.indexing._LocIndexer继承了__getitem__from 的一个实现pandas.core.indexing. _LocationIndexer。实现在这里:
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |