我想将本机的时间戳转换为当前时间。当我输入以下代码时:
ad_operation['Change_time'] = pd.to_datetime(ad_operation['Change_time'],unit='s')
有这样的错误:“ OutOfBoundsDatetime:不能将输入转换为单位's'”
但是我将数据复制到文件中并设为x,这没有问题,我很困惑,我的数据类型是int64,Data列没有空值。
x = 1529958950
pd.to_datetime(x, unit = 's')
output:Timestamp('2018-06-25 20:35:50')
这是怎么回事?
样本数据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
答案 0 :(得分:0)
您的日期不是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