Pandas read_excel奇怪的错误:UnicodeDecodeError:' ascii'编解码器不能解码字节0xe2

时间:2015-06-27 18:40:10

标签: python python-2.7 pandas ipython dataframe

当我在IPython中读取excel文件(或准确地说是Jupyter)时,数据框似乎可以正常读取,但我无法显示它或在文本列上工作(例如,要合并当关键是文本字段时,另一个优点,因为我得到了一个"

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2...

错误

奇怪的是,如果我做了类似的事情:

for i in df['Textual Col Name']:
    print i

它打印所有值ok。

我在这里尝试过提供给其他类似问题的不同解决方案,但没有任何效果。我不认为从excel文件中读取df时,SO的答案很好。

很想得到你的帮助,如何解决这个问题,如果可能的话还要解释为什么所有的说法和做法我仍然可以打印出单独的物品。

提前致谢!

2 个答案:

答案 0 :(得分:0)

您需要指定文件的编码,而不必让文件无法知道它是如何编码的,但是如果您不知道,可以尝试一些并查看哪些有用。encoding=tuf-8 encoding=latin-1中的encoding=cp1252pd.read_excel

答案 1 :(得分:0)

尝试使用二分法来隔离有问题的行:

import numpy as np
import pandas as pd

# substitute your df here
df = pd.DataFrame({'textcol':np.random.randint(10, size=[1000])})

def isokay(df):
    try:
        print(df)
    except UnicodeDecodeError:
        return False
    return True

i = 0
chunksize = len(df) // 2
while True:
    if isokay(df.iloc[i:i+chunksize]):
        i += chunksize
        if i > len(df):
            print('No error found')
            break
    else:
        if chunksize <= 1:
            # Problem occurs at row i
            print('Problem occurs on row {}'.format(i))
            print(df.iloc[i])
            break
        else:
            chunksize /= 2

print(df.iloc[i])可能会导致错误。如果是这样,您可以查阅excel文件以找出行i中包含的数据。