[問題] numpy array 一次選取兩行

看板Python作者時間6年前發表 (2019/04/16 18:57), 6年前編輯推噓0(001)
留言1則, 1人參與, 6年前最新討論串1/4 (看更多)
hi 各位好 小弟又上了問問題了 繼上次遇到的DataFrame之後 這次是numpy array 我現在寫的方式可以達到想要的結果 但是應該有更漂亮的寫法 所以上來請教大家 下面這四行是pandas 讀進來之後.values() -> 變成np array ['AAA', '2019/03/08', 2, '17:54:43', '上班'], ['AAA', '2019/03/08', 2, '23:02:54', '下班'], ['AAA', '2019/03/13', 2, '17:45:20', '上班'], ['AAA', '2019/03/13', 2, '22:11:00', '下班'】 目標是想要計算AAA上班跟下班打卡時間的差(工時) code: for row in PT_record(這是np array 全部的上下班紀錄): #先讀取上班的日期/時間 if row[-1] =='上班': check_in = row[-2] y,m,day_in = row[1].split('/') day_in = int(day_in) #然後讀取下班的日期/時間 elif row[-1] == '下班': check_out = row[-2] y, m, day_out = row[1].split('/') day_out = int(day_out) #確定上下班的日期相同 #然後把上班的時間增加到下班的最後一項 if day_in == day_out: if row[-1] =='上班': continue else: row = np.append(row,check_in) newrowlist.append(row) 我本來的想法是 一次讀取兩行(上班+下班) # 整張表都是上下班的順序 已經把資料整理過 但是因為不知道怎麼用numpy array的loop一次跳兩行 所以只能先用上面的寫法 把上班的打卡時間 加入到下班的後面(最後一項) 所以就會變成下面這樣的結果 ['AAA' '2019/03/08' 2 '23:02:54' '下班' '17:54:43'] ['AAA' '2019/03/13' 2 '22:11:00' '下班' '17:45:20'] AAA 3/8 的下班時間 上班時間 本來想在最後面增加'上班' 但是 np.append不接受str type.. 所以就變成這種奇怪的模式 想請問 1. np.array 有辦法兩行兩行的讀取嗎? 這樣我可以一次讀一天的上班+下班 然後在loop裡面就很好處理了 2. 如果沒有辦法一次讀兩行 我要怎麼做才能增加'上班'這個str 到np array 裡面? 增加完之後要怎麼改變array裡面的順序? 我查過reshape, append 好像都不是我要的 最理想的情況是 ['AAA' '2019/03/08' 2 '上班' '17:54:43' '下班' '23:02:54'] 但是如果不能新增字串的話 ['AAA' '2019/03/08' 2 '17:54:43' '23:02:54' ] 這也是可以 然後我就可以計算上班時間 增加到最後面 請問有什麼辦法嗎? python新手努力學習中 有找過資料但是都不是我要的功能 謝謝各位 補充一下 else: row = np.insert(row, 3, check_in) row = np.insert(row, 4, '上班') 用insert選位置的話可以完成 ['AAA' '2019/03/31' 1 '17:00:23' '上班' '23:01:51' '下班']] 原來直接加到指定位置就好了 但是我如果想要調換順序的話(ex: 上下班放在時間前面) 我目前還是沒有找到辦法 所以還是想知道 這個loop有辦法改寫的更漂亮更簡潔嗎 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 70.93.230.230 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1555441049.A.694.html ※ 編輯: s82237823 (70.93.230.230), 04/17/2019 03:35:31

04/17 16:42, 6年前 , 1F
轉換維度 PT_record.shape = -1, 2, 5 row 即為兩行
04/17 16:42, 1F
文章代碼(AID): #1SjYMPQK (Python)
文章代碼(AID): #1SjYMPQK (Python)