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/cn.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灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP