Python 熊猫:将时间戳转换为datetime.date

Python 熊猫:将时间戳转换为datetime.date,python,datetime,pandas,timestamp,Python,Datetime,Pandas,Timestamp,我有一列时间戳数据 In [27]: train["Original_Quote_Date"][6] Out[27]: Timestamp('2013-12-25 00:00:00') 如何检查这些对象与该类型的datetime.date对象的等价性 datetime.date(2013, 12, 25) 可以将datetime.date对象转换为时间戳,如下所示: #!/usr/bin/env python3 # coding: utf-8 import pandas as pd im

我有一列时间戳数据

In [27]: train["Original_Quote_Date"][6] 
Out[27]: Timestamp('2013-12-25 00:00:00')
如何检查这些对象与该类型的
datetime.date
对象的等价性

datetime.date(2013, 12, 25)

可以将datetime.date对象转换为时间戳,如下所示:

#!/usr/bin/env python3
# coding: utf-8

import pandas as pd
import datetime

# create a datetime data object
d_time = datetime.date(2010, 11, 12)

# create a pandas Timestamp object
t_stamp = pd.to_datetime('2010/11/12')

# cast `datetime_timestamp` as Timestamp object and compare
d_time2t_stamp = pd.to_datetime(d_time)

# print to double check
print(d_time)
print(t_stamp)
print(d_time2t_stamp)

# since the conversion succeds this prints `True`
print(d_time2t_stamp == t_stamp)

使用
.date
方法:

In [11]: t = pd.Timestamp('2013-12-25 00:00:00')

In [12]: t.date()
Out[12]: datetime.date(2013, 12, 25)

In [13]: t.date() == datetime.date(2013, 12, 25)
Out[13]: True

要与DatetimeIndex(即时间戳数组)进行比较,您需要采用另一种方法:

In [21]: pd.Timestamp(datetime.date(2013, 12, 25))
Out[21]: Timestamp('2013-12-25 00:00:00')

In [22]: ts = pd.DatetimeIndex([t])

In [23]: ts == pd.Timestamp(datetime.date(2013, 12, 25))
Out[23]: array([ True], dtype=bool)

从pandas 0.20.3开始,使用将任何
pandas.DateTimeIndex
实例转换为Python
datetime.datetime

假设时间列为时间戳整数毫秒格式

1天=86400000毫秒

给你:

day_divider = 86400000

df['time'] = df['time'].values.astype(dtype='datetime64[ms]') # for msec format

df['time'] = (df['time']/day_divider).values.astype(dtype='datetime64[D]') # for day format

另请参见datetime的相关问题:值得注意的是,对于大型DateTimeIndex,这可能会很慢/占用大量内存。这是因为DatetimeIndex基本上只是一个围绕Int64数组的轻型包装器,而python datetimes数组则是一个完全成熟的python对象数组/布局不紧凑。对于整个列或系列,只需将其与apply方法和lambda结合使用即可。例如,如果t是一系列时间戳:t.apply(lambda x:x.date()),那么值得一提的是,时间部分丢失了,只保留了日期部分。对于那些需要保留时间的人,请使用Xavier Ho提到的
.to_pydatetime()
。有一个相应的
.time()
方法,该方法删除日期并仅返回
datetime.time
组件