我有一个带有unix时间的pandas数据帧,该数据帧被转换为时间戳(一切都很好)。然后,我想提取时间戳列(作为列表)并保留信息。但是由于某种原因,当我这样做时,它会转换回unix时间(甚至有更多的尾随零...):
import pandas as pd
data = {'servertime':[1576887840000,1576887900000,1576887960000], 'val':[1,2,3]}
df = pd.DataFrame(data)
df['timestamp'] = df['servertime'].apply(lambda x: datetime.fromtimestamp(x/1000))
t = df['timestamp'].values.tolist()
t
Out[1]: [1576887840000000000, 1576887900000000000, 1576887960000000000]
有什么想法吗?
答案 0 :(得分:2)
您可以将to_datetime
与unit='ms'
一起使用以提高性能,并为日期时间列表使用Series.dt.to_pydatetime
与tolist()
:
df['timestamp'] = pd.to_datetime(df['servertime'], unit='ms')
print (df)
servertime val timestamp
0 1576887840000 1 2019-12-21 00:24:00
1 1576887900000 2 2019-12-21 00:25:00
2 1576887960000 3 2019-12-21 00:26:00
t = df['timestamp'].dt.to_pydatetime().tolist()
print (t)
[datetime.datetime(2019, 12, 21, 0, 24),
datetime.datetime(2019, 12, 21, 0, 25),
datetime.datetime(2019, 12, 21, 0, 26)]