为什么FrozenList与元组不同?
from pandas.core.base import FrozenList
Type: type
String form: <class 'pandas.core.base.FrozenList'>
File: /site-packages/pandas/core/base.py
Docstring:
Container that doesn't allow setting item *but*
because it's technically non-hashable, will be used
for lookups, appropriately, etc.
为什么不直接用元组呢?那FrozenList能提供什么额外的功能呢?
1 个回答
27
这是一个内部的pandas结构。之所以不使用元组,是因为:
- 它继承自一个常见的pandas类
- 它是可定制的(比如可以自定义显示方式)
- 它并不具备元组的所有功能(有些功能被禁用了)
- 它不能被哈希(所以更像是列表,而不是元组)
这个结构用来表示多重索引的层级、标签和名称。这样做的目的是为了防止通过属性来修改这些内容,而是强制使用方法(比如 set_levels()
)。因为这些状态不能单独改变(对于层级/标签),而必须一起改变。
这些是“公共”的属性,所以需要一个访问机制来完成所有这些操作(如果有必要,内部也可以进行更改,以提高性能)。