首页 > 解决方案 > OutOfBoundsDatetime:无法使用单位“s”转换输入

问题描述

我想将单位的时间戳转换为当前时间。当我输入下面的代码时:</p>

ad_operation['Change_time'] = pd.to_datetime(ad_operation['Change_time'],unit='s')

它有这样一个错误:“OutOfBoundsDatetime: cannot convert input with unit 's'”</p>

但是我在我的文件里复制了一个数据,把它变成了x,没有问题,我一头雾水,我的数据类型是int64,数据列没有空值。

x = 1529958950
pd.to_datetime(x, unit = 's')

output:Timestamp('2018-06-25 20:35:50')

这是怎么回事?</p>


样本数据ad_operation

    ad_id     Change_time  Operation_type  Modify_field
0  593323               0               2             2
1  593323               0               2             3
2  593323               0               2             4
3  593323  20190217000000               1             1
4  593323  20190218233855               1             2
5  593323  20190218000000               1             1
6  593323  20190230000000               1             1

标签: pandas

解决方案


您的日期不是自 POSIX 起源以来的秒数,它们的格式为:%Y%m%d%H%M%S.

pd.to_datetime(ad_operation.Change_time, format='%Y%m%d%H%M%S', errors='coerce')
#0                        NaT
#1                        NaT
#2                        NaT
#3        2019-02-17 00:00:00
#4        2019-02-18 23:38:55
#5        2019-02-18 00:00:00
#6                        NaT
#....

NAT 来自0. (或像 2 月 30 日这样的奇怪日期)。我们可以看到时间戳与您在故障排除中尝试使用的时间戳不同:

ad_operation[ad_operation.Change_time.ne(0)].Change_time.agg([min, max])
#min    20190216000000
#max    20190319235959
#Name: Change_time, dtype: int64

推荐阅读