Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中读取XLSB文件_Python_Pandas - Fatal编程技术网

在Python中读取XLSB文件

在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

在这方面有很多问题,但对于如何将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.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”导入什么包?