尝试读取2016年版本的MS Excel文件。文件包含一些带有数据的列表。从数据库下载的文件,可以在MS Office中正确打开。在下面的示例中,我更改了文件名。
编辑:文件包含俄语和英文单词。最有可能使用Latin-1编码,但是encoding='latin-1'
无济于事
import pandas as pd
with open('1.xlsx', 'r', encoding='utf8') as f:
data = pd.read_excel(f)
结果:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa8 in position 14: invalid start byte
没有encoding ='utf8'
'charmap' codec can't decode byte 0x9d in position 622: character maps to <undefined>
P.S。任务是处理52个文件,将每个表格中的数据与52个文件中的相应表合并。因此,请不要处理工作建议。
很可能您正在使用python3。在Python2中,这不会发生。
XLSX文件是二进制文件(实际上它们是XML,但已被压缩(,因此您需要以二进制模式打开它们。使用此电话打开:
open('1.xlsx', 'rb')
没有完整的追溯,但是我想UnicodeDecodeError来自文件对象,而不是来自read_excel((。之所以发生这种情况,是因为字节流可以包含任何东西,但是我们不希望解码太早发生。read_excel((必须接收原始字节并能够处理它们。
问题在于,原始请求者将用filehandle调用read_excel作为第一个参数。正如最后一个响应者所证明的那样,第一个论点应该是包含文件名的字符串。
我遇到了相同的错误:
df = pd.read_excel(open("file.xlsx",'r'))
但是正确的是:
df = pd.read_excel("file.xlsx")
很可能问题是在俄罗斯符号中。
Charmap是使用默认解码方法,以防未注意编码。
我看到UTF-8和Latin-1是否没有帮助,请尝试读取此文件
pd.read_excel(f)
但是
pd.read_table(f)
甚至只是
f.readline()
为了检查什么是符号提出执行并删除此符号/符号。
熊猫支持编码功能以阅读您的Excel在您的情况下,您可以使用:
df=pd.read_excel('your_file.xlsx',encoding='utf-8')
,或者如果您想在更具体的系统中而没有任何偏心的情况下,则可以使用:
df=pd.read_excel('your_file.xlsx',encoding='sys.getfilesystemencoding()')
有时候,如果我们在excel表中有空单元格,那是熊猫数据框架的零值,而为此,我们可以拥有对我有用的以下方法。
import pandas as pd
import openpyxl
# Load Excel file using openpyxl
wb = openpyxl.load_workbook('excel_sheet_name.xlsx')
sheet = wb.active
# Create an empty DataFrame
data = []
# Iterate over the rows in the sheet
for row in sheet.iter_rows(values_only=True):
data.append(row)
# Convert to DataFrame
excel_file = pd.DataFrame(data)