使用xlwings读取Excel表头

时间:2017-06-28 04:14:25

标签: python excel pandas xlwings

如何使用xlwings将excel中的“表格”读入pandas DataFrame,其中表“headers”成为DataFrame列名?

我试图读取表格的每一种方式,标题行总是从读取中排除!

这是我尝试过的,其中“b”是我的xlwings工作簿对象:

b.sheets['Sheet1'].range('Table1').options(pd.DataFrame)
b.sheets['Sheet1'].range('Table1').options(pd.DataFrame, headers=False)
b.sheets['Sheet1'].range('Table1').options(pd.DataFrame, headers=True)

3 个答案:

答案 0 :(得分:1)

希望这不是最佳答案,但我确实发现我可以引用命名范围,然后.offset(-1).expand('vertical')

答案 1 :(得分:0)

另一个选择是使用api和Excel的ListObject

import xlwings as xw

wb = xw.books.active
ws = wb.sheets('MySheet')
tbl = ws.api.ListObjects('MyTable') # or .ListObjects(1)
rng = ws.range(tbl.range.address) # get range from table address

df = rng.options(pd.DataFrame, header=True).value # load range to dataframe

答案 2 :(得分:0)

让我添加 Felix Zumstein 的评论作为明确的答案,因为在我看来这是最好的解决方案。

b.sheets['Sheet1'].range('Table1[[#All]]').options(pd.DataFrame)

使用方括号表示法也将选择范围从表格主体扩展到标题行。随后转换为pandas DataFrame,可以将其用作标题。

要了解更多信息,请查看 this answer