我希望能够访问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将系列转换为时间戳,但它仍然无效。
我知道我可以解决这个问题,但似乎这个功能应该存在吗?
答案 0 :(得分: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上添加一个问题。正如Wes所说:"welcome to hell"
答案 1 :(得分:2)
现在我建议做pd.DatetimeIndex(dates.Dates).month
。我一直在争论是否要向Series添加一堆特定于数据类型的属性,这些属性只适用于时间戳,但尚未完成。