Python 如何使Datetimeindex不是数据帧中的索引
我希望能够访问Datetimeindex类提供的特殊方法,如month、day等。但是,如果不将数据帧中的序列作为数据帧的索引,我似乎无法将其作为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
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
。我一直在讨论是否要向系列中添加一系列数据类型特定的属性,这些属性只适用于时间戳,但还没有完成。谢谢。如果您决定进行这些更改,请随时通知我们;)谢谢如果您决定进行这些更改,请随时通知我们;)