从 excel 原子读取(用于 luigi 工作流)
Atomically read from excel (for luigi workflow)
我正在尝试使用 pandas.read_excel()
使用内置(原子)luigi 方法在我的 Luigi 工作流程中打开一个 excel 文件。
如果 self.input()
是我的 excel 文档的 luigi 目标,我想做类似的事情:
with self.input().open('r') as f:
pandas.read_excel(f)
或更一般地说:
with open(filename) as f:
pandas.read_excel(f)
但是,这给了我一个错误:
*** UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 10: invalid continuation byte
免责声明:
excel 文件来自外部任务,因此我无法控制它是在哪种类型的计算机上制作的,也无法控制它是否包含 NA 或空白单元格。
问题是我的 self.input()(指向保存我的 excel 文件的位置)应该使用 format = Nop。我的 luigi 目标应该 return 类似于:
luigi.LocalTarget('excelfile.xlsx', format=luigi.format.Nop)
有了这个目标定义,我可以使用原子方式读取:
with self.input().open() as f:
df = pd.read_excel(f)
我正在尝试使用 pandas.read_excel()
使用内置(原子)luigi 方法在我的 Luigi 工作流程中打开一个 excel 文件。
如果 self.input()
是我的 excel 文档的 luigi 目标,我想做类似的事情:
with self.input().open('r') as f:
pandas.read_excel(f)
或更一般地说:
with open(filename) as f:
pandas.read_excel(f)
但是,这给了我一个错误:
*** UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 10: invalid continuation byte
免责声明:
excel 文件来自外部任务,因此我无法控制它是在哪种类型的计算机上制作的,也无法控制它是否包含 NA 或空白单元格。
问题是我的 self.input()(指向保存我的 excel 文件的位置)应该使用 format = Nop。我的 luigi 目标应该 return 类似于:
luigi.LocalTarget('excelfile.xlsx', format=luigi.format.Nop)
有了这个目标定义,我可以使用原子方式读取:
with self.input().open() as f:
df = pd.read_excel(f)