如何将日期时间对象转换为毫秒
How to convert datetime object to milliseconds
我正在按如下方式解析日期时间值:
df['actualDateTime'] = pd.to_datetime(df['actualDateTime'])
如何将此日期时间对象转换为毫秒?
我在 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
from datetime import datetime
print datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
>>>> OUTPUT >>>>
2015-11-02 18:04:32.926
pandas.to_datetime
是将字符串或其他一些数据类型转换为 pandas 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
pandas 中的时间戳是 always in nanoseconds。
这为您提供自纪元 (1970-01-01) 以来的毫秒数:
df['actualDateTime'] = df['actualDateTime'].astype(np.int64) / int(1e6)
就其价值而言,要将单个 Pandas 时间戳对象 转换为 毫秒,我必须这样做:
import time
time.mktime(<timestamp_object>.timetuple())*1000
这将从纪元
开始return毫秒
timestamp_object.timestamp() * 1000
我正在按如下方式解析日期时间值:
df['actualDateTime'] = pd.to_datetime(df['actualDateTime'])
如何将此日期时间对象转换为毫秒?
我在 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
from datetime import datetime
print datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
>>>> OUTPUT >>>>
2015-11-02 18:04:32.926
pandas.to_datetime
是将字符串或其他一些数据类型转换为 pandas 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
pandas 中的时间戳是 always in nanoseconds。
这为您提供自纪元 (1970-01-01) 以来的毫秒数:
df['actualDateTime'] = df['actualDateTime'].astype(np.int64) / int(1e6)
就其价值而言,要将单个 Pandas 时间戳对象 转换为 毫秒,我必须这样做:
import time
time.mktime(<timestamp_object>.timetuple())*1000
这将从纪元
开始return毫秒timestamp_object.timestamp() * 1000