pandas-创建Series序列/hashable

创建序列:
pd.Series(data,index)

Parameters:
data : array-like, Iterable, dict, or scalar value
    Contains data stored in Series.
index : array-like or Index (1d)
    Values must be hashable and have the same length as `data

对于index里有个解释是,index的值必须是hashable

hashable(Python官方词汇表:Search — Python 3.10.1 documentation)

 

 google在线翻译:

如果一个对象的哈希值在其生命周期内永远不会改变(它需要一个 __hash__() 方法),并且可以与其他对象进行比较(它需要一个 __eq__() 方法),那么它就是可哈希的。 比较相等的可散列对象必须具有相同的散列值。

哈希能力使对象可用作字典键和集合成员,因为这些数据结构在内部使用哈希值。

大多数 Python 的不可变内置对象都是可散列的; 可变容器(例如列表或字典)不是; 不可变容器(例如元组和frozensets)只有在它们的元素是可散列的情况下才是可散列的。 默认情况下,作为用户定义类实例的对象是可散列的。 它们都比较不相等(除了它们自己),它们的哈希值来自它们的 id()。

 

另一种不严谨但易懂的解释:参考链接:https://blog.csdn.net/qq_17753903/article/details/85345996

hashable ≈ immutable 可哈希 ≈ 不可变

在Python中:

list、set和dictionary 都是可改变的,比如可以通过list.append(),set.remove(),dict['key'] = value对其进行修改,所以它们都是不可哈希的;

而tuple和string是不可变的,只可以做复制或者切片等操作,所以它们就是可哈希的。


posted on 2022-01-01 07:07  进击的许盈盈  阅读(131)  评论(0编辑  收藏  举报