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

更新:0.15では、datetimelikeメソッドのdt属性にアクセスできるようになります。

dates.Dates.dt.month

古い投稿(これではなくWesのソリューションを使用してください):

を使用してそれを行うための1つの(遅い!)回避策は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 に答える
2

今のところ、私はすることをお勧めしpd.DatetimeIndex(dates.Dates).monthます。タイムスタンプに対してのみ機能する一連のデータ型固有の属性をSeriesに追加するかどうかについて議論してきましたが、まだ追加していません。

于 2012-12-30T23:13:23.153 に答える