pandas.Timestamp是否为不可变类型?求权威解答或验证途径
pandas.Timestamp 是否为不可变类型?
答案很明确:pandas.Timestamp 是不可变类型,虽然官方文档没有把这一点放在最显眼的位置,但通过实际操作和特性验证就能确认。
给你几个简单的验证方法:
尝试修改实例属性会报错
直接动手试一下就知道,Timestamp的实例属性都是只读的,没法直接修改:import pandas as pd ts = pd.Timestamp('2023-10-01') # 尝试修改年份属性 ts.year = 2024运行这段代码会立刻抛出
AttributeError: can't set attribute,这是不可变类型的典型表现。验证可哈希性
不可变类型的一个关键特征是可哈希,能被用作字典的键或者存入集合。反过来,可变类型(比如列表)是做不到的:ts1 = pd.Timestamp('2023-10-01') ts2 = pd.Timestamp('2023-10-01') # 作为字典键正常工作 ts_dict = {ts1: "hello"} print(ts_dict[ts2]) # 输出 'hello',因为两个实例哈希值一致 # 存入集合只会保留一个实例 ts_set = {ts1, ts2} print(len(ts_set)) # 输出 1如果是可变类型,执行这些操作会直接抛出
TypeError: unhashable type。参考底层设计逻辑
Timestamp 本质是 pandas 对标 Python 标准库datetime.datetime的实现,而datetime.datetime本身就是不可变类型。pandas 在设计时保持了这个行为一致性,而且 Timestamp 继承的DatetimeScalar这类标量类型,在 pandas 的设计体系里就是不可变的。
至于官方文档没有明确标注的问题,可能是因为这个特性和标准库行为对齐,官方默认开发者会沿用对 datetime 的认知,或者相关说明藏在更细节的开发文档里,但通过上面的实际验证,完全可以确定它的不可变性。
内容的提问来源于stack exchange,提问作者Mark Horvath
相关产品推荐
相关产品推荐

