Python读取含日期列CSV:大数字日期转换问题求助
问题解答
这些超大数字是什么?
你看到的13位数字是毫秒级Unix时间戳,它代表从1970年1月1日00:00:00 UTC(协调世界时)开始累计的毫秒数。常规Unix时间戳是秒级(10位数字),而这里的13位数字是毫秒精度,所以数值远大于序数日期(序数日期是从公元1年开始的天数,数值通常在几万以内)。
如何转换为常规日期?
有两种高效的处理方式:
方式1:读取CSV时直接解析日期列
利用pandas.read_csv的parse_dates参数指定日期列,同时通过unit='ms'声明时间戳的单位是毫秒:
# 假设日期列名为'date_column',多列的话用列表如['col1', 'col2'] df = pd.read_csv("foo.csv", encoding="utf-8", parse_dates=['date_column'], unit='ms')
方式2:读取后单独转换列
如果已经完成CSV读取,可使用pd.to_datetime单独转换目标列:
# 转换单列为日期格式 df['date_column'] = pd.to_datetime(df['date_column'], unit='ms') # 若需要转换为本地时区(以上海为例),可追加时区处理 df['date_column'] = pd.to_datetime(df['date_column'], unit='ms').tz_localize('UTC').tz_convert('Asia/Shanghai')
验证示例
以你提供的997513068000为例,转换后对应的UTC时间是2001-08-11 05:31:08,你可以通过上述代码验证结果。
内容的提问来源于stack exchange,提问作者n_arch
相关产品推荐
相关产品推荐

