2017-11-09 16 views
0

私はdatetimeindexのデータフレームを持っています。パンダ日時インデックス累積週

>>> df.head() 
Out[6]: 
           1 
2004-01-02 09:00:00+11:00 0.7519 
2004-01-02 10:00:00+11:00 0.7520 
2004-01-02 12:00:00+11:00 0.7515 
2004-01-02 13:00:00+11:00 0.7502 
2004-01-02 14:00:00+11:00 0.7519 

私は週数を記録したいと思います。何日かはとても不足している可能性がある場合、私は単純に私は次の操作を行う場合、私は一年以内に数週間を得る7.

によってエントリ番号を分割することはできません先行知らない:

df['temp']= df.index.week 
df[df.index.year==2005].head() 
Out[20]: 
           1 temp 
2005-01-03 10:00:00+11:00 0.7829  1 
2005-01-03 11:00:00+11:00 0.7815  1 
2005-01-03 12:00:00+11:00 0.7814  1 
2005-01-03 13:00:00+11:00 0.7797  1 
2005-01-03 14:00:00+11:00 0.7731  1 

問題これは週が52で終わり、翌年には再び1から始まるということです。累積週数を得るために年と週の番号でグループ化できると思ったが、同じ週は2年になる可能性がある。

>>> df[df.index.year==2008].resample('d').tail() 
Out[30]: 
            1 temp 

2008-12-27 00:00:00+11:00 0.683678 52 
2008-12-28 00:00:00+11:00  NaN NaN 
2008-12-29 00:00:00+11:00 0.689414  1 
2008-12-30 00:00:00+11:00 0.690654  1 
2008-12-31 00:00:00+11:00 0.691058  1 

>>> df[df.index.year==2009].resample('d').head() 
Out[29]: 
            1 temp 
2009-01-01 00:00:00+11:00 0.695833  1 
2009-01-02 00:00:00+11:00 0.697680  1 
2009-01-03 00:00:00+11:00 0.705733  1 
2009-01-04 00:00:00+11:00  NaN NaN 
2009-01-05 00:00:00+11:00 0.711436  2 

累積週数を記録する方法はありますか?

答えて

0

使用の両方の週と年:ここ

df['week_no'] = df.index.week + (df.index.year - df.index.year.min()) * 52 
+0

申し訳ありませんが、これは正しい週を与えません。 – dayum

+0

何を期待していますか? –

-1

が可能な解決策である、非常に良いではないかもしれません。あらゆる改善が歓迎されます。

df['temp']= df.index.week 
df.loc[(df.temp == 1) & (df.index.month == 12), 'temp'] = 53 
df.loc[(df.temp == 52) & (df.index.month == 1), 'temp'] = 0 
df['cum_wk'] = df.temp + (df.index.year - df.index.year.min()) * 52