推 TitanEric: 先濾開始跟結束時間 再aggregate看看 12/21 08:01
T大,不好意思,你所謂濾掉開始跟結束意思是要我每一天都分成
10:00-10:50 10:50-11:40 11:40-12:30 12:30-13:00,這些組別嗎
但我不知道該怎麼樣去分會比較快....因為資料數多的時候
我用for迴圈跑有點久,所以想請教版友們是否有相關指令可以分享
謝謝
※ 編輯: jasonhsu14 (61.230.21.32 臺灣), 12/21/2020 16:17:25
→ jiyu520: google pandas apply 12/21 18:07
先謝謝你意見,我想是我沒表達清楚
我知道apply這個東西,也會使用
但我的整個問題是說,我不知道該如何以有效的方式去達成
取每一天的10:00-10:50 10:50-11:40 11:40-12:30 12:30-13:00
這些時間區間,並將我的資料分別依照這些期間去分組
再分別取出第一筆、最後一筆與最大最小等,本來是想用resample方式
但該方法無法按照我希望的分類,目前是用for迴圈方式,但效率差
所以想詢問版友是有無效率較好的方式
apply確實是比for有效,但我想不到該如何用apply以達成我的需求
還盼望指教了,謝謝
※ 編輯: jasonhsu14 (220.135.101.201 臺灣), 12/21/2020 19:06:46
推 andy19960407: 直覺會是新增一個欄位定義時間區段 然後groupby 12/21 21:01
推 lycantrope: 不想新增欄位就用pd.cut 12/22 11:00
推 jiyu520: 對的 我知道你表達目的, 你可以將你要做的事項寫成func 12/22 12:48
→ jiyu520: 然後對資料表使用apply 12/22 12:49
→ jiyu520: 所以步驟我想像中或許可以是 12/22 12:50
→ jiyu520: 1. 對時間欄位進行判斷後新增"時間組別標籤欄位" 12/22 12:51
→ jiyu520: 2. groupby對某值欄位進行agg取出 max min first last 12/22 12:52
推 jiyu520: pandas欄位比值運算/query/apply 應該都可以做到1的步驟 12/22 12:55
→ jiyu520: 可能直接欄位比值就可以達到需求~ 12/22 12:56
先謝謝樓上幾位意見,我會再嘗試看看各位提出的方法,希望能順利達成我需求
也感謝各位的撥空協助
※ 編輯: jasonhsu14 (220.135.101.201 臺灣), 12/22/2020 19:14:56
推 aassdd926: 有個 between_time 的api 可以試試用這個過濾 12/23 23:53