我打算将以下一系列 UNIX 纪元转换为常规日期时间对象:
>> val = pd.Series(["1440643875", "1440644191", "1440645638", "1440998720"])
>> val
0 1440643875
1 1440644191
2 1440645638
3 1440998720
Name: obj, dtype: object
似乎有两种方法可以做到这一点。第一个是:
>> pd.to_datetime(val, unit='s')
ValueError: year is out of range
第二个:
val.astype("datetime64[s]")
TypeError: Cannot parse "1445124547" as unit 's' using casting rule 'same_kind'
这里似乎有什么问题?
我还尝试用“在线纪元计算器”工具检查这些时间戳,他们给出了合理的答案..
请您参考如下方法:
问题是元素是字符串,而不是整数。显然,pd.to_datetime() 不够智能,无法将字符串转换为日期时间。
我的解决方案是这样的:
>> val.astype('int').astype("datetime64[s]")
0 2015-08-27 02:51:15
1 2015-08-27 02:56:31
2 2015-08-27 03:20:38
3 2015-08-31 05:25:20
dtype: datetime64[ns]
