2016-08-29 4 views
2

나는 날짜 시간팬더 : 1 주 변수를 만드는 방법은 무엇입니까?

여기
dates = pd.date_range('9/25/2010', periods=10, freq='D') 

df = pd.DataFrame({'col':dates}) 
df['col']=pd.to_datetime(df['col']) 
df['dow'] = df.col.dt.dayofweek 
df['week'] = df.col.dt.to_period('W') 
df['week_alt']=df.col.dt.year.astype(str) + '-w' + df.col.dt.week.astype(str) 

df 
Out[21]: 
     col dow     week week_alt 
0 2010-09-25 5 2010-09-20/2010-09-26 2010-w38 
1 2010-09-26 6 2010-09-20/2010-09-26 2010-w38 
2 2010-09-27 0 2010-09-27/2010-10-03 2010-w39 
3 2010-09-28 1 2010-09-27/2010-10-03 2010-w39 
4 2010-09-29 2 2010-09-27/2010-10-03 2010-w39 
5 2010-09-30 3 2010-09-27/2010-10-03 2010-w39 
6 2010-10-01 4 2010-09-27/2010-10-03 2010-w39 
7 2010-10-02 5 2010-09-27/2010-10-03 2010-w39 
8 2010-10-03 6 2010-09-27/2010-10-03 2010-w39 
9 2010-10-04 0 2010-10-04/2010-10-10 2010-w40 

일주일이 Monday에 시작 Sunday에 끝나는 것을 볼 수있는 dataframe 있습니다.

주 시작 시점을 제어하고 싶습니다. 예를 들어 일주일에 일주일이 시작되면 2010-09-262010-w39이고, 2010-10-032010-w40이됩니다.

팬더에서 어떻게 할 수 있습니까?

+1

[isoweek] (https://pypi.python.org/pypi/isoweek/1.3.0) 모듈을 사용하지만 주 시작 날짜를 제어 할 수 없습니다. – IanS

+0

잘못된 것입니다. 새해의 첫 번째 날에 주별로 대개 잘못 입력하면 1 월 1 일에 새해 번호가 있지만 지난 주에는 지난 해가됩니다. 즉 2017 년 1 월 1 일은 2017-w52로 반환됩니다. –

답변

3

UPDATE : 당신이이 세 가지 UNIX 수정 중에서 선택할 수 있습니다 %U, %V, %W :

% U주의 첫 날이 일요일과 올해의주 번호, 생각 (00..53).

% V ISO 주 번호, 월요일은 첫째 요일 (01.53)입니다.

% 주 월요일,주의 첫 번째 요일 (00.53). 일주일의 첫날 생각 (00..53)와 같은 일요일에 올해의

In [189]: df.col.dt.strftime('%U-%V-%W') 
Out[189]: 
0 38-38-38 
1 39-38-38 
2 39-39-39 
3 39-39-39 
4 39-39-39 
5 39-39-39 
6 39-39-39 
7 39-39-39 
8 40-39-39 
9 40-40-40 
Name: col, dtype: object 

%U주 번호.

In [190]: df.col.dt.strftime('%Y-w%U') 
Out[190]: 
0 2010-w38 
1 2010-w39 
2 2010-w39 
3 2010-w39 
4 2010-w39 
5 2010-w39 
6 2010-w39 
7 2010-w39 
8 2010-w40 
9 2010-w40 
Name: col, dtype: object 

%V 주 월요일 (01.

In [191]: df.col.dt.strftime('%Y-w%V') 
Out[191]: 
0 2010-w38 
1 2010-w38 
2 2010-w39 
3 2010-w39 
4 2010-w39 
5 2010-w39 
6 2010-w39 
7 2010-w39 
8 2010-w39 
9 2010-w40 
Name: col, dtype: object 
+0

매우 좋지만 한 주 정의를 어떻게 제어 할 수 있습니까? 즉,주의 요일을 정하는 것입니다 .-) 일요일 또는 월요일에 예를 들어 –

+1

@ 노비,'weekofyear' 또는'평일 '이 필요합니까? – MaxU

+0

주어진 요일의 첫날을 어느 날로 정할 필요가 있습니다. 주일은 일요일에 시작하여 다음 토요일에 끝납니다. 그룹핑과 플로팅에 변수를 사용할 수 있기를 원합니다. (팬더는 이것이 시간 변수라는 것을 알고 있습니까?) –

관련 문제