OutOfBoundsDatetime:无法使用单位 's' 转换输入 1575262698000.0

Vik*_*r.w 4 python pandas

我试图将该数字从数据帧转换为日期时间,列 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
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

print(pd.to_datetime(time['date'], unit='s'))
Run Code Online (Sandbox Code Playgroud)

但我在标题中遇到了问题,如果我尝试不使用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]
Run Code Online (Sandbox Code Playgroud)

这当然是错误的,知道为什么吗?谢谢!

这是输入的示例:1575262698000.0输出应如下所示:2019-12-02 04:58:18

Thé*_*ach 6

您的错误来自pandas 时间戳限制:看起来您的输入列不是以秒为单位,而是以毫秒 (ms) 为单位。出于简化目的仅取一个值:

>>> pd.to_datetime(1575262698000, unit='ms')
Timestamp('2019-12-02 04:58:18')
Run Code Online (Sandbox Code Playgroud)

如果你想使用秒作为单位,你可以这样做

>>> pd.to_datetime(1575262698000 / 1000, unit='s')
Timestamp('2019-12-02 04:58:18') 
Run Code Online (Sandbox Code Playgroud)

删除unitarg 会产生 1970 年左右的日期时间,因为此参数的默认值是ns纳秒。1575262698000 纳秒大约是 1575 秒,或者说是 1970 年 1 月 1 日之后 25 分钟左右!