Pandas DataFrame:full spec for the \uyu getitem_u9()?

2024-03-29 14:00:10 发布

您现在位置:Python中文网/ 问答频道 /正文

短版

对于pandas Dataframe.__getitem__(),允许的输入是什么(实际上是输入类型),函数会因此产生什么结果?在

细节

问题描述

我想编写充分利用DataFrame[]的代码,本质上是Dataframe.__getitem__()。为此,我想知道关于输入/返回结果的详细信息,在API页面上可以找到,但是对于这个方法没有。在

到目前为止已经做了哪些工作来解决这个问题

我在Pandas API page上查找了该函数的完整规范。尽管有许多其他方法被记录在案,但是Dataframe.__getitem__()不是。在

我也看了the tutorial,但我不认为这是试图详尽无遗的。在

我确实看过Dataframe.__getitem__()的源代码(下面我自己的答案中描述了这一点的第一步)。很明显,可以接受各种完全不同的类型作为输入,但是反向工程代码以确定当这些类型被传递时会发生什么,这似乎不是掌握此方法的预期方式。在

附加背景

Pandas是Python在科学和统计中扮演的角色中最重要的库之一,DataFrame可以说是Pandas中最核心的对象,[]操作符可以说是DataFrame上最核心的方法。因此,实际上回答我在这里发布的问题具有很高的教学价值,而不仅仅是对我有用。在


Tags: 方法函数代码api类型dataframepandas核心
1条回答
网友
1楼 · 发布于 2024-03-29 14:00:10

我怀疑这个函数缺少doc的部分原因是源代码中缺少doc注释,现在我来看看它。如果没有人提出更方便用户的方法,下面是实际的DataFrame.__getitem__()方法:

def __getitem__(self, key):

    # shortcut if we are an actual column
    is_mi_columns = isinstance(self.columns, MultiIndex)
    try:
        if key in self.columns and not is_mi_columns:
            return self._getitem_column(key)
    except:
        pass

    # see if we can slice the rows
    indexer = _convert_to_index_sliceable(self, key)
    if indexer is not None:
        return self._getitem_slice(indexer)

    if isinstance(key, (Series, np.ndarray, list)):
        # either boolean or fancy integer index
        return self._getitem_array(key)
    elif isinstance(key, DataFrame):
        return self._getitem_frame(key)
    elif is_mi_columns:
        return self._getitem_multilevel(key)
    else:
        return self._getitem_column(key)

。。。这至少给出了DataFrame[]接受的键(索引)类型的顶层细分。在

相关问题 更多 >