使用熊猫将Unix 13位数字转换为日期时间/时间戳格式

时间:2019-10-01 22:53:22

标签: python python-3.x pandas datetime unix-timestamp

我有一个熊猫数据框,其中包含如下所示的13位/毫秒数据,我正在尝试使用.datetime()'pd.Timestamp()将其转换为清晰的日期和时间戳格式,这似乎都需要10位/秒的数据。

  Date
0 1569968699999
1 1569968700000
2 1569968759999
3 1569968760000
4 1569968819999

我尝试分别使用'int''float'和大熊猫将数据转换为.astype(int)甚至.astype(float)类型的数据,然后除以1000得出10-位/秒的数据,显然会产生“无法将序列转换为类型” float”的错误。

我理解为什么“除以1000”选项仅在定义变量时起作用(如在其他多个堆栈溢出帖子/问题中所述)。

我也尝试使用:

df['Date'] = pd.to_datetime(df['Date'], unit='s')

df['Date'] = pd.to_datetime(df['Date'], unit='ms')

但是第一个似乎向数据帧添加了更多数字,第二个返回了“有符号整数大于最大值”错误。

任何帮助表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

也许这可以帮助您

import pandas as pd
import numpy as np
import datetime
df=pd.DataFrame()
i=[1569968699999,1569968700000,1569968759999,1569968760000,1569968819999]
df['date']=pd.Series(i)
df['date']=df['date'].apply(lambda d: datetime.datetime.fromtimestamp(int(d)/1000).strftime('%Y-%m-%d %H:%M:%S'))

输出:

                  date
0  2019-10-02 01:24:59
1  2019-10-02 01:25:00
2  2019-10-02 01:25:59
3  2019-10-02 01:26:00
4  2019-10-02 01:26:59