2016-09-23 6 views
2

데이터를 구조화하고 처리하는 데 팬더를 사용하고 있습니다.그룹화 된 기간별 데이터 프레임 그룹화

enter image description here

나는 분으로 많은 날짜 시간을 그룹화 내가 분에 의해 '비트 레이트'점수의 합을하기 위해 집계했다 : 이것은 내 DataFrame입니다. 이이 Dataframe이 내 코드였다

def aggregate_data(data): 

    def delete_seconds(time): 

     return (datetime.datetime.strptime(time, '%Y-%m-%d %H:%M:%S')).replace(second=0) 


    data['new_time'] = data['beginning_time'].apply(delete_seconds) 
    df = (data[['new_time', 'bitrate']].groupby(['new_time'])).aggregate(np.sum) 

    return df 

가 지금은 양동이로 오분와 비슷한 일을하고 싶어합니다. 나는 5 분으로 그룹 내 날짜 시간을 할 지팡이와 평균이 같은 .. 뭔가 수행합니다 (물론이 dosent 작품!)

df.groupby([df.index.map(lambda t: t.5minute)]).aggregate(np.mean) 

아이디어? 고마워 !

+0

색인이 datetimeIndex는 다음 방금'resample' 사용할 수있는 이미 인 경우.'df.resample ('5 분')을 의미한다()'u는 나에게이 일을 도울 수 – EdChum

답변

4

resample을 사용하십시오.

df.resample('5Min').sum()

이 당신의 인덱스가 제대로 DateTimeIndex로 설정되어 가정합니다.

리샘플링은 실제로 시간 버킷에 대한 groupby 작업이므로 TimeGrouper를 사용할 수도 있습니다.

df.groupby(pd.TimeGrouper('5Min')).sum()

+0

일을해야합니까? http://stackoverflow.com/questions/39691671/resampling-timeseries-with-a-given-timedelta – DataAddicted