[問題] resample是否可指定每日的期間

看板Python作者 (14號星期五的傑森)時間4年前 (2020/12/20 22:06), 4年前編輯推噓6(606)
留言12則, 5人參與, 4年前最新討論串1/1
各位版友好,這邊有個問題想請教 start, end = '2000-10-01 9:30:00', '2000-10-20 15:30:00' rng = pd.date_range(start, end, freq='10min') ts=pd.DataFrame(data={'DT': rng, 'Value':np.arange(len(rng)) * 2}) ts.set_index('DT', inplace=True) 假設我有一個長得像上面ts的資料 這個資料期間 從10/1 9:30 開始每10分鐘就有資料,直到10/20的15:30 然後我只想取得每一天的10:00到13:00 期間,每50分鐘以內的資料總和 然後最後不滿50分鐘,則以到13:00期間的資料為主 我若想達成這樣,還麻煩版友指點小弟我該如何操作 我知道有resample可以用,可是google看來看去 resample似乎無法取出 每一天的10:00-13:00這段期間的每50分鐘為一組 的資料 因此還盼望版友們能指點,先謝謝了 也謝謝願意了解我問題的各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.101.201 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1608473172.A.9A9.html

12/21 08:01, 4年前 , 1F
先濾開始跟結束時間 再aggregate看看
12/21 08:01, 1F
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

12/21 18:07, 4年前 , 2F
google pandas apply
12/21 18:07, 2F
先謝謝你意見,我想是我沒表達清楚 我知道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

12/21 21:01, 4年前 , 3F
直覺會是新增一個欄位定義時間區段 然後groupby
12/21 21:01, 3F

12/22 11:00, 4年前 , 4F
不想新增欄位就用pd.cut
12/22 11:00, 4F

12/22 12:48, 4年前 , 5F
對的 我知道你表達目的, 你可以將你要做的事項寫成func
12/22 12:48, 5F

12/22 12:49, 4年前 , 6F
然後對資料表使用apply
12/22 12:49, 6F

12/22 12:50, 4年前 , 7F
所以步驟我想像中或許可以是
12/22 12:50, 7F

12/22 12:51, 4年前 , 8F
1. 對時間欄位進行判斷後新增"時間組別標籤欄位"
12/22 12:51, 8F

12/22 12:52, 4年前 , 9F
2. groupby對某值欄位進行agg取出 max min first last
12/22 12:52, 9F

12/22 12:55, 4年前 , 10F
pandas欄位比值運算/query/apply 應該都可以做到1的步驟
12/22 12:55, 10F

12/22 12:56, 4年前 , 11F
可能直接欄位比值就可以達到需求~
12/22 12:56, 11F
先謝謝樓上幾位意見,我會再嘗試看看各位提出的方法,希望能順利達成我需求 也感謝各位的撥空協助 ※ 編輯: jasonhsu14 (220.135.101.201 臺灣), 12/22/2020 19:14:56

12/23 23:53, 4年前 , 12F
有個 between_time 的api 可以試試用這個過濾
12/23 23:53, 12F
文章代碼(AID): #1VtrfKcf (Python)
文章代碼(AID): #1VtrfKcf (Python)