创建序列: 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是不可变的,只可以做复制或者切片等操作,所以它们就是可哈希的。