1

我想访问 Datetimeindex 类提供的特殊方法,例如月、日等。但是,如果不将其设为数据框的索引,我似乎无法将数据框中的系列设为 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 将系列转换为时间戳,但它仍然不起作用。

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

4

2 回答 2

2

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

于 2012-12-30T23:13:23.153 回答
2

更新:在 0.15 中,您将可以访问类似 datetime 方法的 dt 属性:

dates.Dates.dt.month

旧帖子(使用 Wes 的解决方案而不是这个):

这是一个(慢!)解决方法来使用它apply,不理想但它有效:

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

这似乎是一个错误(你不能这样做apply(lambda x: x.month)),也许值得在 github 上作为问题添加。正如韦斯所说:“欢迎来到地狱”

于 2012-12-30T23:09:45.207 回答