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

问题描述 投票:0回答:1

我有一个包含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')

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

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

python python-3.x pandas datetime unix-timestamp
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.