prosource

판다 날짜를 주 번호로 변환

probook 2023. 5. 28. 20:53
반응형

판다 날짜를 주 번호로 변환

판다 데이터 프레임의 데이터에서 주 번호를 추출하고 싶습니다.

날짜 형식은 datetime64[ns]입니다.

날짜에서 시간을 제거하기 위해 날짜를 정규화했습니다.

df['Date'] = df['Date'].apply(pd.datetools.normalize_date)

이제 날짜는 데이터 프레임 열에서 - 2015-06-17과 같습니다.

이제 저는 그것을 주 번호로 변환하고 싶습니다.

Series.dt.iscalendar()의 week 속성에 액세스하기만 하면 됩니다.

예:

In [286]:
df['Date'].dt.isocalendar().week

Out[286]:
0    25
dtype: int64

In [287]:
df['Week_Number'] = df['Date'].dt.isocalendar().week
df

Out[287]:
        Date  Week_Number
0 2015-06-17           25

를 사용할 수 있는 또 다른 가능성은 좋은 리소스입니다.

df['Week_Number'] = df['Date'].dt.strftime('%U')

'%U'연도의 주 번호(일요일은 주의 첫 번째 요일)를 제로 패딩 십진수로 나타냅니다.첫 번째 일요일 이전의 새해의 모든 날은 0주로 간주됩니다.

여러 해의 날짜가 있는 경우 년-주 조합을 만드는 것이 좋습니다.

df['Year-Week'] = df['Date'].dt.strftime('%Y-%U')

판다도 있습니다..dayofyear그리고..weekofyear의 출력에 바로 적용할 수 있는 기능성pandas.to_datetime(df['column_name'])출력으로 "타임 스탬프" 유형을 지정합니다.

import pandas as pd
df['formatted_date'] = pd.to_datetime(df['datetime'])
df['day_of_year'] = df.formatted_date.apply(lambda x: x.dayofyear)
df['week_of_year'] = df.formatted_date.apply(lambda x: x.weekofyear)
from datetime import date
df_date = pd.DataFrame([date.today()],columns  = ['today'])
print(df_date)
#### Print Output ####
#        today
#0  2019-09-07
df_date['weeknum'] = df_date.today.apply(lambda x:x.isocalendar()[1])
print(df_date)
#### Print Output ####
#        today  weeknum
#0  2019-09-07       36

이 답변으로 업데이트
현재 내 파이썬 버전(3.7, 2021년 5월)에서.구문df['Date'].dt.week는 다음 경고를 인쇄하고 있습니다.FutureWarning: weekofyear and week have been deprecated, please use DatetimeIndex.isocalendar().week insteadDatetime 사용 방법인덱스는 다음과 같습니다.df['week_number'] = pd.DatetimeIndex(df.index).isocalendar().week
시리즈를 반환하는 데 사용하는 방법에 대한 작은 데모입니다.

# Input
time_idx = pd.date_range('2022-01-01', periods=4, freq='H').tz_localize('UTC')
values = [9 , 8, 7, 6]

df1 = pd.DataFrame(data = values, index=time_idx, columns=['vals'])
# FutureWarning: weekofyear and week have been deprecated
df1['week_number'] = df1.index.week 

# Using DatetimeIndex.isocalendar().week instead
df2 = pd.DataFrame(data = values, index=time_idx, columns=['vals']) 
# Does not throws a warning
df2['week_number'] = pd.DatetimeIndex(df2.index).isocalendar().week 

print(df2)

판다의 경우:

import random
import pandas as pd

desired_length = 100
desired_frequency="20D" # XXXM: XXX months, "XXXD":XXX days, XXXMin: XXX minutes etc.

index = pd.date_range('2020-01-01', periods=desired_length, freq=desired_frequency)
data = [random.random() for _ in range(len(index))]

df = pd.DataFrame(data=data, index=index, columns=['DATA'])
df[df.index.isocalendar().keys()] = df.index.isocalendar()

언급URL : https://stackoverflow.com/questions/31181295/converting-a-pandas-date-to-week-number

반응형