我使用以下方法创建了一个数据框,其中一个列是一系列的日历日期
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)})
这样,尽管我使用datetime.date创建日期,但我却将date列的类型命名为datetime64 [ns]。我已经浏览了几个问题,但并没有真正发现它们有帮助。
如何将此数据框的日期列的类型转换为日期对象?
date_range
确实返回datetime64,无论您如何指定开始和结束(例如,它们也可以是字符串)。
如果要将datetime64
值转换为datetime.date
对象,则可以使用.date
DatetimeIndex的访问器(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
值,因为对其进行的操作将具有更高的性能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句