我目前正在设计一个需要与pandas.Index
基本相同的新对象,特别感兴趣的是MultiIndex
。
pandas的Index对象的设置行为也非常出色,因此我不想直接使用pandas.Index
及其子类,因为我们的用户已经熟悉pandas
,而不是重新发明轮子。
具体来说,我感兴趣的是在通过loc
进行切片时如何实际使用索引,特别注意MultiIndex
。
我花了几个小时在网上抓取任何相关信息,这就是我想的我知道的:
pandas.Index
is intended to be subclassed.特别是看起来有一些最小API的意图,以便loc
调度有效,但文档在这里有点稀疏。
相关的源代码位于pandas/core/indexing.py,但代码并没有让我充满信心,我想做的事情很简单,特别是MultiIndex
。我不清楚Index
的责任在哪里开始和结束。
使用index.slice_indexer
解析切片。
index.get_indexer
解析子集索引。此时感觉我需要处理切片自己的所有业务逻辑,只有在我需要询问标签的整数位置时才会推迟索引,但仍有一些奇怪的事情我我不确定:
get_value
做了什么?我看到它被广泛使用,但我似乎无法弄清楚它的工作是什么。
我可以使用索引的__getitem__
多少?看起来它只匹配numpy
语义。在这种情况下,我会按照布尔向量和iloc
之类的内容推迟吗?
我将如何传递MultiIndex
的标签或切片?