将datetime64转换为datetime.date对象

时间:2014-06-14 06:35:46

标签: python pandas

我使用

创建了一个包含一列作为一系列日历日期的数据框
start = datetime.date(2008, 8, 01)
end = datetime.date(2009, 1, 19)
range = pd.date_range(start, end, freq = 'D')
df = pd.DataFrame({'date': pd.Series(range)})

通过这个我得到日期列的类型为datetime64 [ns],虽然我使用datetime.date来创建日期。我已经查看了几个问题,但并没有真正发现它们有用。

如何将此数据框的日期列类型转换为日期对象?

1 个答案:

答案 0 :(得分:1)

date_range确实返回datetime64,无论你如何指定开始和结束(例如,这些也可以是字符串)。
如果要将datetime64值转换为datetime.date个对象,可以使用DatetimeIndex的.date访问器(date_range返回这样的索引):

In [22]: s = pd.Series(range.date)

In [23]: s
Out[23]:
0     2008-08-01
1     2008-08-02
2     2008-08-03
3     2008-08-04
4     2008-08-05
...
167    2009-01-15
168    2009-01-16
169    2009-01-17
170    2009-01-18
171    2009-01-19
Length: 172, dtype: object

In [24]: s[0]
Out[24]: datetime.date(2008, 8, 1)

有关这些日期时间组件的文档,请参阅此处:http://pandas.pydata.org/pandas-docs/stable/timeseries.html#time-date-components。要将其转换为datetime.datetime个对象,您可以使用range.to_pydatetime()

但是作为U2EF1,依赖于应用程序,你很可能想要这样的datetime64值,因为使用它的操作将更加高效。