python - OutOfBoundsDatetime:无法将输入 1575262698000.0 与单位“s”转换
问题描述
我正在尝试将该数字从数据帧转换为日期时间,列 time['date'] 如下所示:
0 1.575263e+12
1 1.575263e+12
2 1.575263e+12
3 1.575263e+12
4 1.575307e+12
...
95 1.576521e+12
96 1.576521e+12
97 1.576521e+12
98 1.576521e+12
99 1.576521e+12
Name: date, Length: 100, dtype: float64
我尝试了以下方法:
print(pd.to_datetime(time['date'], unit='s'))
但是我在标题中遇到了问题,如果我尝试不unit='s'
使用该列,则如下所示:
0 1970-01-01 00:26:15.262698000
1 1970-01-01 00:26:15.262699000
2 1970-01-01 00:26:15.262698000
3 1970-01-01 00:26:15.262701000
4 1970-01-01 00:26:15.307111000
...
95 1970-01-01 00:26:16.521124623
96 1970-01-01 00:26:16.521116000
97 1970-01-01 00:26:16.521118000
98 1970-01-01 00:26:16.521145701
99 1970-01-01 00:26:16.521147000
Name: date, Length: 100, dtype: datetime64[ns]
这当然是错的,知道为什么吗?谢谢!
这是输入的示例:1575262698000.0
输出应如下所示:2019-12-02 04:58:18
解决方案
您的错误来自熊猫时间戳限制:看起来您的输入列不是以秒为单位,而是以毫秒 (ms) 为单位。为简化起见,仅取一个值:
>>> pd.to_datetime(1575262698000, unit='ms')
Timestamp('2019-12-02 04:58:18')
如果你想以秒为单位,你可以这样做
>>> pd.to_datetime(1575262698000 / 1000, unit='s')
Timestamp('2019-12-02 04:58:18')
删除unit
arg 会产生大约 1970 年的日期时间,因为此参数的默认值是ns
纳秒。而 1575262698000 纳秒大约是 1575 秒,或者说在 1970 年 1 月 1 日之后 25 分钟左右不同!
推荐阅读
- service - 在 CHDIR 生成 /opt/Informer5/informer5.sh 步骤失败:没有这样的文件或目录
- pentaho - Pentaho Kettle - 动态获取文件名
- javascript - Ext js 5.0.1 列自定义排序
- python - 从 java 客户端订阅到 python opcua 服务器不起作用
- vue.js - Vuejs的v-for中如何处理组件发出的事件
- sql - 拆分字段并添加小数点以创建数值 SQL
- redis - redis pub sub 仅适用于某组键?
- protractor - 如何使用量角器执行 .exe 文件?
- ruby-on-rails - 编组数据库对象是否安全?
- vba - 无法通过 vba 打开 Microsoft Office 文档映像