gpt4 book ai didi

python - pandas Dataframe.loc 如何接受 [...] 语法?

转载 作者:行者123 更新时间:2023-12-02 06:41:48 25 4
gpt4 key购买 nike

我已阅读此文档:

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对象,即 DataFramedf .

df.loc的类型是 pandas.core.indexing._LocIndexer .

尽管如此,我还是无法解决这些问题:

  1. 如何使 Python 函数/类接受上述语法?

  2. pandas.core.frame.DataFrame的源代码在哪里是属性(property) self.loc定义??

最佳答案

  1. 如何让类接受一般语法是通过实现 __getitem__这是运算符重载的一个例子。这允许使用 [] 对该类的对象进行索引。例如:

    class get_item_example(object):
    def __getitem__(self, key):
    print(key)

    尝试一下:

    >>> gi = get_item_example()
    >>> gi['a']
    a
    >>> gi[['a','b','c']]
    ['a', 'b', 'c']
    >>> gi['a','b','c']
    ('a', 'b', 'c')

    df.loc[df['shield'] > 6, ['max_speed']] 的情况下,传递给 __getitem__ 的 key 是包含 df['shield'] > 6 返回的 pandas 系列和单个项目列表 ['max_speed'] 的元组。

  2. 在pandas源代码中,pandas.core.indexing._LocIndexerpandas.core.indexing继承了__getitem__的实现。 _LocationIndexer。实现在这里:https://github.com/pandas-dev/pandas/blob/61362be9ea4d69b33ae421f1f98b8db50be611a2/pandas/core/indexing.py#L1374

关于python - pandas Dataframe.loc 如何接受 [...] 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57253901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com