Python Pandas date_的范围从DatetimeIndex到日期格式

Python Pandas date_的范围从DatetimeIndex到日期格式,python,pandas,Python,Pandas,Pandasdate\u range返回一个Pandas.DatetimeIndex,该索引的格式为时间戳(日期加时间)。例如: In [114] rng=pandas.date_range('1/1/2013','1/31/2013',freq='D') In [115] rng Out [116] <class 'pandas.tseries.index.DatetimeIndex'> [2013-01-01 00:00:00, ..., 2013-01-31 00:00:0

Pandas
date\u range
返回一个
Pandas.DatetimeIndex
,该索引的格式为时间戳(日期加时间)。例如:

In  [114] rng=pandas.date_range('1/1/2013','1/31/2013',freq='D')
In  [115] rng
Out [116]
<class 'pandas.tseries.index.DatetimeIndex'>
[2013-01-01 00:00:00, ..., 2013-01-31 00:00:00]
Length: 31, Freq: D, Timezone: None
[114]中的
rng=pandas.日期范围('2013年1月1日','2013年1月31日',频率'D')
在[115]rng中
Out[116]
[2013-01-01 00:00:00, ..., 2013-01-31 00:00:00]
长度:31,频率:D,时区:无
鉴于我在应用程序中未使用时间戳,我希望将此索引转换为日期,以便:

In  [117] rng[0]
Out [118]
<Timestamp: 2013-01-02 00:00:00>
[117]rng[0]中的

出局[118]
将以
2013-01-02
的形式发布

我正在使用pandas 0.9.1版

返回Python
datetime的NumPy数组。datetime
对象:

In [8]: dates = rng.to_pydatetime()

In [9]: print(dates[0])
2013-01-01 00:00:00

In [10]: print(dates[0].strftime('%Y-%m-%d'))
2013-01-01

对我来说,目前的答案并不令人满意,因为在内部,它仍然以时间戳的形式存储,包括小时、分钟、秒

熊猫版本:0.22.0

我的解决方案是将其转换为
datetime.date

[30]中的
:将熊猫作为pd导入
[31]中:rng=pd.日期范围('2013年1月1日','2013年1月31日',频率'D')
在[32]:date_rng=rng.date#这里它变成了date
在[33]中:日期[0]
Out[33]:datetime.date(2013,1,1)
在[34]中:打印(日期为[0])
2013-01-01

没有类似于
时间戳
对象的
日期戳。如果您要在pandas中进行进一步分析,最好将这些日期保持在
Timestamp
s,而忽略零。如果您想提取它们以供输出或显示,@unutbu的解决方案就在下面。是的,为什么不使用时间戳?我正在将结果打印到电子表格中,然后将其用作Access DB的输入。Access DB因零而崩溃。您可以使用,但我不确定电子表格中的格式。注意,您可以直接从时间戳对象应用strftime,例如
rng.map(lambda t:t.strftime(“%Y-%m-%d”)
。链接到文档: