如何使用Python Pandas正确转换API返回的日期格式?
问题根因
你拿到的整数字段是秒级Unix时间戳,pd.to_datetime()默认处理整数类型输入时,会将数值识别为纳秒级时间戳,单位不匹配就会输出完全偏离实际的异常日期。你给出的样例值1657762387实际对应2022-07-14的时间点,不指定单位直接转换会得到1970年附近的错误结果。
顺带提一句,你示例代码里的列名存在拼写偏差,常规列名拼写是column,如果你的数据集里列名本身就叫colum可忽略这个提示。
正确转换代码
调用转换方法时显式指定unit='s'参数,明确告知pandas输入值的时间单位是秒,即可得到正确结果:
import pandas as pd df['colum'] = pd.to_datetime(df['colum'], unit='s')
常见适配场景
- 如果API返回的是13位长度的毫秒级时间戳,把
unit参数值改为'ms'即可;如果是微秒级时间戳就用'us' - 如果转换后需要匹配国内东八区时区,可以追加时区转换逻辑:
# 转换为北京时间的示例 df['colum'] = pd.to_datetime(df['colum'], unit='s')\ .dt.tz_localize('UTC')\ .dt.tz_convert('Asia/Shanghai')
内容的提问来源于stack exchange,提问作者Randy
相关产品推荐
相关产品推荐

