pandas 如何仅读取 excel 表格的表头

使用 pandas 读取 excel表格很简单:

import pandas as pd

table = pd.read_excel(io)

加载表格后,若想获得表格表头:

table.columns

这种方法可行,但有些时候其实仅仅只是想直接获得 excel 表格的表头,尤其是当 excel 表格本身体量很大,每次都需要将数据表加载到内存会非常耗时&也没必要,有时甚至会直接溢出卡死,看了一下官方文档,貌似可以使用nrows参数指定只读取 excel 的特定行,意味着可以利用它只读取首行表头:

header = pd.read_excel(io, nrows = 0)

然而实测发现该参数并不能阻止 pandas 读取整个excel 表格,仍然会耗费大量时间和内存。请问各位兄弟姐妹是否有比较好的经验处理这一问题?

阅读 807
评论 3月26日提问
    1 个回答
    老瓜
    • 179

    确实如如此, pandas 无论做什么操作都会先打开表格再读取所有数据
    遇到数据量大的表时格我一般会用 xlwings 来协助处理

    import xlwings as xw
    import pandas as pd
    
    app = xw.App(visible=True, add_book=False) # visible 隐式打开文件
    book = app.books.open('xxx.xlsx')  # 打开 excel
    sht = book.sheets[0] # 选择 sheet
    sht.range('a1:a4').value  #获取值
    book.close() # 关闭
    app.quit() # 退出

    这个方法不用读取所有的数据,而是只选择自己需要的数据。但是打开表格这一步好像是免不了的。

    评论 赞赏
      撰写回答

      登录后参与交流、获取后续更新提醒