我使用
创建了一个包含一列作为一系列日历日期的数据框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来创建日期。我已经查看了几个问题,但并没有真正发现它们有用。
如何将此数据框的日期列类型转换为日期对象?
答案 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
值,因为使用它的操作将更加高效。