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 表格,仍然会耗费大量时间和内存。请问各位兄弟姐妹是否有比较好的经验处理这一问题?

阅读 17k
1 个回答

确实如如此, 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() # 退出

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进