Python 如何使Datetimeindex不是数据帧中的索引

Python 如何使Datetimeindex不是数据帧中的索引,python,pandas,Python,Pandas,我希望能够访问Datetimeindex类提供的特殊方法,如month、day等。但是,如果不将数据帧中的序列作为数据帧的索引,我似乎无法将其作为Datetimeindex。以以下为例: dates Out[119]: Dates 0 1/1/2012 1 1/2/2012 2 1/3/2012 3 1/4/2012 4 1/5/2012 5 1/6/2012 6 1/7/2012 7 1/8/2012 8

我希望能够访问Datetimeindex类提供的特殊方法,如month、day等。但是,如果不将数据帧中的序列作为数据帧的索引,我似乎无法将其作为Datetimeindex。以以下为例:

dates

Out[119]:
         Dates
0     1/1/2012
1     1/2/2012
2     1/3/2012
3     1/4/2012
4     1/5/2012
5     1/6/2012
6     1/7/2012
7     1/8/2012
8     1/9/2012
9    1/10/2012
10  12/31/2012

date_series = pd.DatetimeIndex(dates.Dates)
date_series.month
Out[115]: array([ 1,  1,  1,  1,  1,  1,  1,  1,  1,  1, 12])

dates.Dates = pd.DatetimeIndex(dates.Dates)
dates.Dates.month
AttributeError: 'Series' object has no attribute 'month'
我还尝试使用pd.to_datetime将序列转换为时间戳,但仍然不起作用


我知道我可以解决这个问题,但似乎这个功能应该存在?

更新:在0.15中,您可以访问datetimelike方法的dt属性:

dates.Dates.dt.month

旧帖子(请使用Wes的解决方案,而不是此):

这里有一个(缓慢!)的解决方法,可以使用,虽然不理想,但可以工作:

In [11]: from pandas.lib import Timestamp

In [12]: df.Dates.apply(lambda x: Timestamp(x).month)
Out[12]: 
0      1
1      1
2      1
3      1
4      1
5      1
6      1
7      1
8      1
9      1
10    12
Name: Dates

这似乎是一个bug(您无法执行
apply(lambda x:x.month)
),也许值得在github上添加它作为一个问题。正如Wes所说:。

更新:在0.15中,您可以访问datetimelike方法的dt属性:

dates.Dates.dt.month

旧帖子(请使用Wes的解决方案,而不是此):

这里有一个(缓慢!)的解决方法,可以使用,虽然不理想,但可以工作:

In [11]: from pandas.lib import Timestamp

In [12]: df.Dates.apply(lambda x: Timestamp(x).month)
Out[12]: 
0      1
1      1
2      1
3      1
4      1
5      1
6      1
7      1
8      1
9      1
10    12
Name: Dates

这似乎是一个bug(您无法执行
apply(lambda x:x.month)
),也许值得在github上添加它作为一个问题。正如韦斯所说:.

现在我建议做
pd.DatetimeIndex(dates.dates).month
。我一直在讨论是否要向系列中添加一系列数据类型特定的属性,这些属性只适用于时间戳,但还没有完成。

现在我建议执行
pd.DatetimeIndex(dates.dates).month
。我一直在讨论是否要向系列中添加一系列数据类型特定的属性,这些属性只适用于时间戳,但还没有完成。

谢谢。如果您决定进行这些更改,请随时通知我们;)谢谢如果您决定进行这些更改,请随时通知我们;)