4
"날짜"와 "숫자"열이있는 데이터 프레임이 있습니다.주별 팬더 데이터 프레임 나누기
dates = pd.date_range('1/1/2001','1/1/2003', freq = 'd')
nums = [np.random.randint(100) for x in range(len(dates))]
df = pd.DataFrame({'Dates': dates, 'DOW': dates.strftime('%a'), 'Nums': nums})
df = df[(df.DOW != 'Sat') & (df.DOW !='Sun')]
df = df.drop([7,18]).reset_index(drop = True)
각 주를 별도로 분리 할 수 있도록 데이터 프레임을 비울 필요가 있습니다. 궁극적 인 목표는 매주 MAX의 'Nums'값을보고 다음 주 마지막 값과 비교하여 변화가 무엇인지 확인하는 것입니다. 예를 들어 :
week1 = df[0:5]
week2 = df[5:9]
week3 = df[9:12]
In [156]: w1max = week1.Nums.max()
Out[156]: 97
In [157]: w2Last = week2.iloc[-1].Nums
Out[157]: 76
pctChange = (w2Last-w1max)/float(w1max)
In [166]: pctChange
Out[166]: -0.21649484536082475
문제는 몇 주는 일을 누락 (예 : week2은 월요일 누락 및 week3 금요일 누락)이다. 그럼 어떻게 그들을 분리합니까?
가장 가까운 것은 df.resample()
을 사용하는 것 같지만 비교를하는 방법을 사용하는 것을 시도하고 있습니다.
똑똑하고, .shift와 .Grouper에 대해 몰랐다. – RSHAP