在Python中读取XLSB文件
在这方面有很多问题,但对于如何将xlsb文件读入pandas还没有简单的答案。有没有一种简单的方法可以做到这一点?嗨,实际上有一种方法。只需使用pyxlsb库在Python中读取XLSB文件,python,pandas,Python,Pandas,在这方面有很多问题,但对于如何将xlsb文件读入pandas还没有简单的答案。有没有一种简单的方法可以做到这一点?嗨,实际上有一种方法。只需使用pyxlsb库 import pandas as pd from pyxlsb import open_workbook as open_xlsb df = [] with open_xlsb('some.xlsb') as wb: with wb.get_sheet(1) as sheet: for row in sheet
import pandas as pd
from pyxlsb import open_workbook as open_xlsb
df = []
with open_xlsb('some.xlsb') as wb:
with wb.get_sheet(1) as sheet:
for row in sheet.rows():
df.append([item.v for item in row])
df = pd.DataFrame(df[1:], columns=df[0])
更新:
从1.0版开始,read_excel()现在可以通过传递engine='pyxlsb'读取二进制excel(.xlsb)文件
来源:Pyxlsb确实是一种读取xlsb文件的选项,但是,它相当有限 我建议使用xlwings软件包,它可以在不丢失xlsb文件中的表格格式、公式等的情况下读取和写入xlsb文件。有大量的文件可用
import pandas as pd
import xlwings as xw
app = xw.App()
book = xw.Book('file.xlsb')
sheet = book.sheets('sheet_name')
df = sheet.range('A1').options(pd.DataFrame, expand='table').value
book.close()
app.kill()
在本例中,“A1”是excel表格的起始位置。
要写入xlsb文件,只需写入:
sheet.range('A1').value = df
如果您想读取一个大的二进制文件或任何具有某些范围的excel文件,您可以直接输入以下代码
range = (your_index_number)
first_dataframe = []
second_dataframe = []
with open_xlsb('Test.xlsb') as wb:
with wb.get_sheet('Sheet1') as sheet:
i=0
for row in sheet.rows():
if(i!=range):
first_dataframe.append([item.v for item in row])
i=i+1
else:
second_dataframe.append([item.v for item in row])
first_dataframe = pd.DataFrame(first_dataframe[1:], columns=first[0])
second_dataframe = pd.DataFrame(second_dataframe[:], columns=first.columns)
随着pandas-
2020年1月29日发布的1.0.0
增加了对二进制Excel文件的支持
import pandas as pd
df = pd.read_excel('path_to_file.xlsb', engine='pyxlsb')
注:
- 您需要升级pandas-
pip安装pandas--upgrade
- 您需要安装
pyxlsb
-pip安装pyxlsb
要能够读取xlsb文件,必须安装openpyxl
依照
引擎:str,默认无
如果io不是缓冲区或路径,则必须将其设置为标识io。支持的引擎:“xlrd”、“openpyxl”、“odf”、“pyxlsb”。发动机兼容性:
“xlrd”支持旧式Excel文件(.xls)
“openpyxl”支持更新的Excel文件格式
“odf”支持OpenDocument文件格式(.odf、.ods、.odt)
“pyxlsb”支持二进制Excel文件
在版本1.2.0中更改:引擎xlrd现在只支持旧式.xls文件。
当发动机=无时,将使用以下逻辑确定发动机:
如果路径\或\缓冲区是OpenDocument格式(.odf、.ods、.odt),则将使用odf
否则,如果路径\或\缓冲区是xls格式,则将使用xlrd
否则,如果安装了openpyxl,则将使用openpyxl
否则,如果安装了xlrd>=2.0,将引发ValueError
否则将使用xlrd并发出未来警告。此案例将在未来版本的pandas中引发ValueError
xlsb读数(不带索引列):
import pandas as pd
dfcluster = pd.read_excel('c:/xml/baseline/distribucion.xlsb', sheet_name='Cluster', index_col=0, engine='pyxlsb')
不,我不这么认为。看看这个:。这是一个悬而未决的问题。你应该先看看如何转换它,这看起来是一个非常古老的答案。我想知道最近熊猫套餐中是否添加了任何内容如果问题仍然存在,恐怕没有:/Yeah。问题仍然存在。目前,我想我需要手动将其转换为xlsx文件,然后读取。我正在寻找pandas中内置的一些函数来实现这一点。目前还不存在这样的函数。我尝试了这个方法,但我得到的是Python中的一些浮点数,比如32874.0,而不是excel文件(“2月20日”)中的正常日期。有没有办法解决这个问题?是的,Excel会将日期记为浮点数。使用内置方法“.to_datetime()”。谢谢!关于日期转换-Excel似乎用1900-01-01减去2天的整数来计算日期。因此,标准的to_datetime似乎不起作用。这增加了一个主要的要求:您必须有一个正在运行的Excel实例。这在Linux计算机上不起作用。获取值错误:未知引擎:pyxlsb。这个引擎现在是内置在pandas中,还是我必须单独安装和导入pyxlsb?需要安装它pip3安装pyxlsb
它不是内置的,只是受支持^^^查看答案中的注释。已安装和导入pyxlsb。仍在获取值错误:未知引擎:pyxlsb。进口熊猫有什么诀窍吗?你们有什么版本的熊猫pd.show_versions()
您不需要导入它。我的猜测是,您安装的内容与正在运行的内容不匹配。e、 你是在python2中安装的,还是在python3中运行的?如果您运行print(pd.show_versions())
它应该会告诉您在版本方面执行的是什么。为什么我的anaconda python 3的pandas只能更新为0.25.1?需要为“open_xlsb”导入什么包?