如何将datetime对象转换为毫秒

2024-06-28 15:42:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在按如下方式分析日期时间值:

df['actualDateTime'] = pd.to_datetime(df['actualDateTime'])

如何将此datetime对象转换为毫秒?

我没看到在doc of to_datetime中提到毫秒。

更新(基于反馈): 这是提供错误TypeError: Cannot convert input to Timestamp的代码的当前版本。列Date3必须包含毫秒(相当于datetime对象的数字)。

import pandas as pd
import time

s1 = {'Date' : ['2015-10-20T07:21:00.000','2015-10-19T07:18:00.000','2015-10-19T07:15:00.000']}

df = pd.DataFrame(s1)

df['Date2'] = pd.to_datetime(df['Date'])

t = pd.Timestamp(df['Date2'])

df['Date3'] = time.mktime(t.timetuple())

print df

Tags: to对象importdfdatetimedatetime方式
3条回答

pandas.to_datetime是将字符串或少数其他数据类型转换为熊猫datetime[ns]

在你的实例中,初始的'actualDateTime'没有milliseconds,所以,如果你正在解析一个有毫秒的列,你将得到数据。

例如

df
Out[60]: 
                         a  b
0  2015-11-02 18:04:32.926  0
1  2015-11-02 18:04:32.928  1
2  2015-11-02 18:04:32.927  2

df.a
Out[61]: 
0    2015-11-02 18:04:32.926
1    2015-11-02 18:04:32.928
2    2015-11-02 18:04:32.927
Name: a, dtype: object

df.a = pd.to_datetime(df.a)

df.a
Out[63]: 
0   2015-11-02 18:04:32.926
1   2015-11-02 18:04:32.928
2   2015-11-02 18:04:32.927
Name: a, dtype: datetime64[ns]

df.a.dt.nanosecond
Out[64]: 
0    0
1    0
2    0
dtype: int64

df.a.dt.microsecond
Out[65]: 
0    926000
1    928000
2    927000
dtype: int64

您可以尝试pd.to_datetime(df['actualDateTime'], unit='ms')

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.to_datetime.html

说这将表示在纪元,与变化's','ms','ns'。。。

更新

如果你想要14567899表格的时间戳。。

import pandas as pd
import time
t = pd.Timestamp('2015-10-19 07:22:00')
time.mktime(t.timetuple())

>> 1445219520.0

最新更新

df = pd.DataFrame(s1)
df1 = pd.to_datetime(df['Date'])
pd.DatetimeIndex(df1)
>>>DatetimeIndex(['2015-10-20 07:21:00', '2015-10-19 07:18:00',
           '2015-10-19 07:15:00'],
          dtype='datetime64[ns]', freq=None)
df1.astype(np.int64) 
>>>0    1445325660000000000
1    1445239080000000000
2    1445238900000000000
df1.astype(np.int64) // 10**9
>>>0    1445325660
1    1445239080
2    1445238900
Name: Date, dtype: int64

熊猫的时间戳是always in nanoseconds

这将为您提供自纪元(1970-01-01)以来的毫秒数:

df['actualDateTime'] = df['actualDateTime'].astype(np.int64) / int(1e6)

相关问题 更多 >