1
smallzhan 2018-07-05 23:54:40 +08:00
看看 pandas 的 read_xlsx 函数
|
2
smallzhan 2018-07-05 23:55:18 +08:00 1
额,说错,是 read_excel 函数
|
3
changnet 2018-07-06 01:24:19 +08:00 via Android
好像不行。openpyxl 只是改进对高版本 excel 的支持,功能接口差不多。
如果文档没法固定列这一列,或者这一列的范围,excel 本身就没有多少列,循环查找不就可以了么。 我用得也不多,仅个人意见。 |
4
LuckCode 2018-07-06 09:23:03 +08:00 via iPhone
读出 header,获取指定列名的 index,然后按下标读?
|
5
pharaoh21c OP @LuckCode 谢谢哈!弱弱的问一下,怎么读出 header 呀?我网上搜了半天,没看到代码。。。
|
6
pharaoh21c OP |
7
shuax 2018-07-06 10:52:07 +08:00
列名怎么改?
|
8
pharaoh21c OP @shuax 我是原来表格里就有列名。。。所以想直接读取
|
9
wangdaqiao 2018-07-06 13:54:40 +08:00
先读出列名所在行(一般是第一行)到一个 list 中,然后就能根据列名找到其在哪一列,后面就很清楚了。
|
10
saulshao 2018-07-06 14:18:39 +08:00
直接就把所有的列名都读出来,然后循环一下就知道你想要的列是在第几列了。
|
11
smallzhan 2018-07-06 20:33:16 +08:00
@pharaoh21c pandas 库啊,没去试一下么,read_excel 读进去数据后,表格里面的第一行,也就是你的标题,自动变成了下,例如简单的 data = pandas.read_excel("xxx.xlsx") 那么可以用 data['NTCC1'] 直接访问这一列。
|
12
pharaoh21c OP @smallzhan @saulshao @wangdaqiao 谢谢!其实我说的列明并非第一行的列标题,而是直接将列(如 A 列)改成了另外一个名字如‘ NTCC1 ’(就是你选中了整列以后在左上角有个空格里直接输入‘ NTCC1 ’),A1 单元格是列的中文名称。现在是想读到这个‘ NTCC1 ’列名称,并非在 A1 单元格里的这个列名称。当初用 VBA 写函数的时候这样做比较方便,现在改成 python 了就不知道怎么弄了。现在我改用 openpyxl 了,pandas 等要过会儿再学习了。。。
|
13
LuckCode 2018-07-06 23:24:07 +08:00
@pharaoh21c 我和 #9 的想法是一样的,从回复看来是我想错了。。。
|
14
pharaoh21c OP @LuckCode 嗯,内嵌的 VBA 还是有它的优势的,研究中。。。
|
15
Arnie97 2018-07-08 11:41:22 +08:00 via Android
原来这个列名本身还能改啊,囧😳
|
16
pharaoh21c OP @Arnie97 是的,改了列名本身的话,使用 VBA 可以直接读取,而不需要再通过循环查找首行列名称来找了,我感觉应该可以节约程序运算时间。。。
|
17
matrix273 2018-07-29 02:26:50 +08:00 via Android
list.index('NTCC1')了解一下,将对应行转换为列表,然后再 sheet.col_values(list.index('NTCC1'))
|