我的數據框中有大約500,000個條目,我想對這些數據應用某種平滑處理,以顯着減少條目數量。如何將切片應用於數據框?
這是一個示例數據幀df
:
EVENT GRADE SERVICE_TIME QUEUE_TIME HOLD_TIME
AAA 3 170 20 12
AAA 4 165 15 10
AAA 3 172 24 12
AAA 3 105 5 10
BBB 5 40 10 10
BBB 5 60 10 8
目的是減少的SERVICE_TIME
,QUEUE_TIME
和HOLD_TIME
的粒度。
要做到這一點,我想組條目由EVENT
和GRADE
,以及估計的SERVICE_TIME
平均值爲60秒(即,[0; 60]的片窗口,[61; 120],[121; 180 ],[181; 240]等等,直到最大值爲SERVICE_TIME
)。切片窗口的大小可以靈活地從60更改爲任何其他值,這一點很重要。 所以,切片應該適用於SERVICE_TIME
,而其他列QUEUE_TIME
和QUEUE_TIME
應該相應地被平均。
樣品結果:
EVENT GRADE SERVICE_TIME QUEUE_TIME HOLD_TIME
AAA 3 171 22 12
AAA 3 105 5 10
AAA 4 165 15 10
BBB 5 50 10 9
所以,SERVICE_TIME
,170和172的兩個值,被合併,因爲它們都屬於切片窗口[121; 180]。所以我計算了平均值171
,然後我只是平均了QUEUE_TIME
和HOLD_TIME
的相應值。
我該如何切片?
如果我不得不計算平均值(沒有切片),那麼我會這樣做。
result = df.groupby(['EVENT','GRADE']).agg({'SERVICE_TIME': 'mean',
'QUEUE_TIME': 'mean',
'HOLD_TIME': 'mean'}).reset_index()