Python库pandas可以读取Excel电子表格,并使用pandas.read_excel(file)
命令将其转换为pandas.DataFrame
。在引擎盖下,它使用了xlrd库,该库用于does not support ods文件。
是否有用于ods文件的等价物pandas.read_excel
?如果没有,我如何对Open Document格式的电子表格(ods文件)执行相同的操作?LibreOffice和OpenOffice都使用ODF。
发布于 2015-03-08 04:56:52
编辑:幸运的是,如果你可以更新到最新的Pandas版本,下面的答案现在已经过时了。如果您仍然希望使用Pandas版本的数据,并且仅在需要时才从ODS更新它,请继续阅读。
似乎答案是否定的!我会将读取ODS的工具描述为仍然参差不齐。如果您使用的是POSIX,那么在使用Pandas非常好的xlsx导入工具之前动态导出到xlsx的策略可能是一种选择:
unoconv -f xlsx -o tmp.xlsx myODSfile.ods
总之,我的代码如下所示:
import pandas as pd
import os
if fileOlderThan('tmp.xlsx','myODSfile.ods'):
os.system('unoconv -f xlsx -o tmp.xlsx myODSfile.ods ')
xl_file = pd.ExcelFile('tmp.xlsx')
dfs = {sheet_name: xl_file.parse(sheet_name)
for sheet_name in xl_file.sheet_names}
df=dfs['Sheet1']
这里,fileOlderThan()是一个函数(请参阅http://github.com/cpbl/cpblUtilities),如果tmp.xlsx不存在或比.ods文件旧,则该函数返回true。
发布于 2013-07-25 01:42:06
另一种选择:read-ods-with-odfpy。此模块接受OpenDocument电子表格作为输入,并返回一个列表,从中可以创建一个DataFrame。
发布于 2017-08-02 03:51:42
如果你只有几个.ods文件要读,我可以在openoffice中打开它,并将其另存为excel文件。如果您有很多文件,可以使用Linux中的unoconv
command以编程方式将.ods文件转换为.xls (with bash)。
然后用pd.read_excel('filename.xls')
就可以很容易地读入它
https://stackoverflow.com/questions/17834995
复制相似问题