繁体   English   中英

将datetime64转换为datetime.date对象

[英]Conversion of datetime64 to datetime.date object

我使用以下方法创建了一个数据框,其中一个列是一系列的日历日期

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对象,则可以使用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值,因为对其进行的操作将具有更高的性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM