【问题标题】:openpyxl read out excel table and pass it to a pandas DataFrameopenpyxl 读出 excel 表并将其传递给 pandas DataFrame
【发布时间】:2020-03-07 12:28:42
【问题描述】:

我想用 xlwings 将 excel 表格 (*) 的内容读入 pandas DataFrames。

我知道:pass openpyxl data to pandas 关于: openpyxl.worksheet.table 模块

这样的模块提供了一系列用于创建和修改 excel 表的功能,但我不知道如何简单地将表传递到 DataFrame 中,也不知道这是否真的可行(即我认为没有一种将 xlwings 对象读入 Pandas 的方法)

有什么想法吗?

注意事项: 1)请注意我说的是表格而不是表格。(我知道 pd.read_excel('name.xlsx', sheetname='Sheet1')

2) 我也知道一种方法是在阅读工作表时跳过行或列,这在我的情况下是行不通的。我需要引用一个命名表。

3) 对于非 excel 用户,经常会误解 Excel 中的表格是什么。表是一个命名的范围(您可以转到 INSERT 选项卡并看到“表”)。该对象在 VBA 中称为 Listobject。所以表格不是excel中的简单范围,也不是命名范围,不止于此,它实际上是pandas dataframe的excel版本。

【问题讨论】:

  • 基本上像下面@Max Kaha 的回答,但使用范围内的表名:df = sht.range('MyTable').options(pd.DataFrame).value

标签: python pandas xlwings listobject


【解决方案1】:

您是否尝试过 xlwings 模块的内置转换器?它们似乎具有可转换为Pandas DataFramePandas Series 的预构建函数。

xlwings Documentation

这是他们给出的简单示例:

>>> sht = xw.Book().sheets[0]
>>> df = sht.range('A1:D5').options(pd.DataFrame, header=2).value
>>> df
    a     b
    c  d  e
ix
10  1  2  3
20  4  5  6
30  7  8  9

【讨论】:

  • 嗨,Max,恭喜您成为新的贡献者。关于答案,我没有尝试过,但看起来它会将特定范围的工作表传递给数据框。我在这里谈论的是传递一张桌子。表是一个命名的范围,在 VBA 代码中称为 Listobject。
猜你喜欢
  • 2016-05-15
  • 2020-02-16
  • 2012-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-07
  • 2021-12-27
相关资源
最近更新 更多