为何Pandas中pd.Timestamp因参数不同返回当前/纪元日期?
Pandas中pd.Timestamp不同输入的行为差异解析
代码与输出
import pandas as pd t1 = pd.Timestamp("23:12:05") print("t1:",t1) t2 = pd.Timestamp(1) print("t2:",t2)
输出结果:
t1: 2024-07-23 23:12:05 t2: 1970-01-01 00:00:00.000000001
原因解析
1. 仅时分秒的字符串输入
当传入只包含时分秒的字符串(比如"23:12:05")时,pd.Timestamp会自动用当前系统日期补全缺失的日期部分,生成完整的datetime对象。这是因为Timestamp本质是完整的日期时间类型,必须包含日期和时间两个维度的信息,缺省日期时就默认用当前日期填充。
2. 整数输入
当传入整数(比如1)时,这个数值会被当作Unix纪元的纳秒时间戳处理。Unix纪元的起始点是1970-01-01 00:00:00 UTC,所以输入1就代表从纪元开始后过了1纳秒,最终得到1970-01-01 00:00:00.000000001。
如果需要指定时间戳的单位,可以通过unit参数调整,比如:
# 把1当作秒级时间戳 t3 = pd.Timestamp(1, unit='s') print("t3:", t3) # 输出:1970-01-01 00:00:01
内容的提问来源于stack exchange,提问作者Nilesh Ingle
相关产品推荐
相关产品推荐

