Grouper에서 시작 시간을 어떻게 조정합니까?인덱스 값을 시작하여 Pandas Groupby/Grouper 그룹
이 샘플 DF 시작 :
import datetime as DT
df = pd.DataFrame({
'Buyer': 'Carl Mark Carl Joe Joe Carl'.split(),
'Quantity': [1,3,5,8,9,3],
'Date' : [
DT.datetime(2013,1,1,13,0),
DT.datetime(2013,3,1,13,5),
DT.datetime(2013,5,1,20,0),
DT.datetime(2013,8,2,10,0),
DT.datetime(2013,9,2,12,0),
DT.datetime(2013,11,2,14,0),
]})
df = df.set_index('Date')
df.groupby(pd.Grouper(freq='1MS'))["Quantity"].count()
Date
2013-01-01 1
2013-02-01 0
2013-03-01 1
2013-04-01 0
2013-05-01 1
2013-06-01 0
2013-07-01 0
2013-08-01 1
2013-09-01 1
2013-10-01 0
2013-11-01 1
df.groupby(pd.Grouper(freq='2MS'))["Quantity"].count()
Date
2013-01-01 1
2013-03-01 1
2013-05-01 1
2013-07-01 1
2013-09-01 1
2013-11-01 1
내가 찾던 것은 Grouper or TimeGrouper
를 사용하여 인덱스 일로부터 "2MS"
입니다. 위의 내용은 인덱스의 첫 번째 값 또는 2012 년 1 월 1 일부터 "2MS"
을 반환합니다. 어떻게 2
타겟팅에 대한 '8/1/2013'
에서 2MS
을받을 수 있나요 :
Date
2013-01-01 1
2013-03-01 1
2013-05-01 1
2013-08-01 2
2013-09-01 1
2013-11-01 1
참고 : 내가 GROUPBY을 할 노력하고있어하는 것은 인덱스 값을 기반으로
..
- 1 GROUPBY 슬라이스를 시작할 것 1/1에서. 두 번째 슬라이스는 3/1에서 시작하고 세 번째 슬라이스는 5/1에서 시작합니다. 종료 기간은 2MS입니다. 이제 Grouper를 사용하여 첫 번째 날짜부터 슬라이스를 시작하고 두 달 간격으로 계속합니다. 네 번째 간격은 8/1 끝 10/2에서 시작해야합니다. 지금 당장 7/1에서 8/2가 시작됩니다.
이 후 있습니까 = 'Date', freq = '2MS'), 'Buyer']). sum()'? 당신이 무엇을 성취하기를 원하는지는 정말로 분명하지 않습니다. – MaxU
미안하지만 여전히 나에게 분명하지 않습니다. 다른 사람들이 그것을 이해하고 적절한 답을 줄 수 있기를 바랍니다. – MaxU
다시 시도하십시오 ... Ist groupby (gb) 기간 시작 1/1 끝 3/1, 두 번째 gb 시작 2/1 끝 4/1 세 번째 gb 시작 3/1 끝 5/1, 4 번째 시작 8/2 끝 10/2 5 번째 시작 11/2 끝 1/2 내년. 모든 2M ... 그루퍼를 사용하면 첫 번째 값에서 슬라이스 카운트를 시작하고 2M 슬라이스에서 계속됩니다. 그루퍼가 슬라이스 창에서 첫 번째 이후 모든 값을 무시하기 때문에 적절한 슬라이스 시간 창을 얻을 수 없습니다. 타임 스탬프 인 인덱스 값을 기반으로 생각하는 2M 창. – Merlin