2015-06-27 46 views
0

當我讀取IPython中的Excel文件(或確切地說是Jupyter)時,數據框似乎被讀取正常,但我無法顯示它或它的文本列的工作(例如,與另一EXCEL文檔的時候,關鍵是文本字段),因爲我得到一個「熊貓read_excel奇怪的錯誤:UnicodeDecodeError:'ascii'編解碼器無法解碼字節0xe2

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

錯誤

奇怪的是,如果我做類似:

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

它可以打印所有的值。

我已經嘗試過提供給其他類似問題的不同解決方案,但沒有任何工作。對於從excel文件讀取df時,我認爲沒有好的答案。

很想得到你的幫助如何解決這個問題,如果可能的話也解釋爲什麼所有說和做我仍然可以打印單個項目就好了。

提前致謝!

回答

0

您需要指定文件的編碼,而不必知道該文件是如何編碼的,但您可以嘗試幾個文件,並查看哪些文件可用,如果您不知道。 encoding=tuf-8encoding=latin-1encoding=cp1252 in pd.read_excel

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行中包含的數據。

相關問題