2017-11-09 2 views
0

datetimeindex가있는 데이터 프레임이 있습니다.Pandas datetime 인덱스 누적 주

>>> 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