如何使用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)
答案 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。