Python 板


LINE

openpyxl難用到爆...pandas簡單易懂 一個forloop就寫完了 你這問題核心應該是要修邊 讓每個人的表可以是任意n*m的大小 先假設當初寫表的的人沒有很認真排版 表任意排版如下 https://i.imgur.com/EgpTkS6.jpg 可以看到空行空列很隨興排 所以需要把取出來的各dataframe去邊(去nan) 如下 https://i.imgur.com/ZbB06Qp.jpg 再把各個處理好的dataframe存到字典裡面 =====================程式碼&說明============================ import pandas as pd import numpy as np df = pd.read_excel(r"你的路徑", header=None) index_notna = list(df.loc[pd.notna(df[0])].index) #找出各學生開始的列成list index_notna.append(len(df)) #等等跑迴圈最後一組的結束位置 students = {} #創一個空字典 裡面每個key(學生名)會對到他的dataframe for i in range(len(index_notna)-1): #跑迴圈歷遍,學生數會是index的長度-1 student_name = df.loc[index_notna[i],0] #取出學生名 range_a = np.arange(index_notna[i],index_notna[i+1]) #設定找尋的上下邊界 A = df.loc[range_a,1:] #A不取學生那行 A = A.dropna(how = 'all', axis = 0) #移除所有為值為nan的列 A = A.dropna(how = 'all', axis = 1) #移除所有為值為nan的行 row_names = list(A.iloc[:,0][A.iloc[:,0].notna()]) #列名list col_names = liststudents[(A.iloc[0,:][A.iloc[0,:].notna()]) #行名list A = A.reset_index(drop=True) #重置列的序號 A = A.T.reset_index(drop=True).T #重置行的序號 A = A.drop(index = 0, columns = 0) #移除第0行跟第0列 A.columns = col_names #重新標籤 A.index = row_names #重新標籤 students[student_name] = A #將處理好去邊的表格放進字典裡 namelist = list(students.keys()) #學生名單list ============================================================================= 後面找各學生的表呼叫students['學生的名子'] 就能叫出修飾好的表了 有比較聰明的寫法再歡迎前輩指教...剛自學python一個月 很多指令還不熟 如果有比較聰明的指令可幫忙提點 謝謝 ※ 引述《ninifs (快快樂樂過每天 !)》之銘言: : 請教各位大大, : 小弟剛學會一些基本的python和openpyxl操作, : 也有時候也會用Pyqt寫成一個小介面幫助自己工作效率, : 目前遇到困難是工作上想實作以下操作,希望有高手幫忙指引一下! : excel內的數據如最下面, : 主要是有多個學員資料(至少100個,學員A,B,C,D......) : 每個學員有一個區塊的資料, : 每一個區塊的rows和columns數量不固定, : (就是表格內的 "day"和"內容"數量不固定) : 希望能用Pyqt的介面,做出三個下拉選單, : 第一個下拉選單可以選 => 學員A,學員B,學員C...etc : 第二個下拉選單可以選 => day1,day2,day3...etc : 第三個下拉選單可以選 => 內容1,內容2,內容3...etc : 這樣就可以定位到某一個cell,然後回報數值 : 可是我第一步就卡住了, : 若第一個下拉選單選了 "學員B", : 我該怎麼讓程式在接下來的動作中, : 只會去尋找"學員B"那個區塊裡面的東西 ?(因為那個區塊的大小不固定...@@) : 先謝謝各位大神了! : ===========example================= : 學員A : 內容1 內容2 內容3 : day1 23 12 65 : day2 14 23 42 : day3 5 21 654 : day4 16 5 879 : day5 86 435 433 : 學員B : 內容1 內容2 內容3 內容4 內容5 : day1 23 12 65 85 67 : day2 14 23 42 883 67 : day3 5 21 654 13 98 : 學員C : 內容1 內容2 : day1 23 12 : day2 14 23 : day3 5 21 : day4 16 5 : day5 86 435 : day6 123 23 : day7 79 64 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.107.240.178 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1675234720.A.022.html
1F:推 nsay: (筆記 02/01 18:59
2F:→ ninifs: 謝謝大大的教學 02/11 21:34
3F:推 ninifs: 非常感謝 02/11 21:37







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP