2016-05-15 102 views
2

我想從以下URL中的Excel文件讀給大熊貓:使用代碼使用熊貓從URL在Excel文件中讀取 - XLRDError

url1 = 'https://cib.societegenerale.com/fileadmin/indices_feeds/CTA_Historical.xls' 

url2 = 'https://cib.societegenerale.com/fileadmin/indices_feeds/STTI_Historical.xls' 

pd.read_excel(url1) 

但是它不「T工作,我得到的錯誤:

XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '2000/01/' 

在谷歌搜索後,似乎有時.xls的通過網址提供的文件交流在諸如html或xml之類的場景後面以不同的文件格式保存。

當我手動下載Excel文件並使用Excel打開它時,出現錯誤消息:文件格式和擴展名不匹配。該文件可能已損壞或不安全。除非你相信它的源不要打開它」

當我打開它,它看起來就像一個普通的Excel文件。

我碰到一個帖子網上說建議我在文本編輯器打開該文件來看看是否有任何額外的信息保存適當的文件格式,但我沒有看到任何額外的信息,當使用記事本+ +打開時,

請有人請幫助我把這個「xls」文件讀入一個熊貓DataFramj妥善請?

回答

1

看來你可以使用read_csv

import pandas as pd 

df = pd.read_csv('https://cib.societegenerale.com/fileadmin/indices_feeds/CTA_Historical.xls', 
       sep='\t', 
       parse_dates=[0], 
       names=['a','b','c','d','e','f']) 
print df 

然後我檢查最後一列f,如果有一些其他的值NaN

print df[df.f.notnull()] 

Empty DataFrame 
Columns: [a, b, c, d, e, f] 
Index: [] 

所以只有NaN,這樣你就可以通過參數usecols最後一列f過濾:

import pandas as pd 

df = pd.read_csv('https://cib.societegenerale.com/fileadmin/indices_feeds/CTA_Historical.xls', 
       sep='\t', 
       parse_dates=[0], 
       names=['a','b','c','d','e','f'], 
       usecols=['a','b','c','d','e']) 
print df 
+0

啊,非常感謝!這工作完美! - 你是否知道read_csv會起作用,或者有什麼方法可以告訴? – s666

+0

首先,我打開帶有文件的網址時,我的Excel返回警告。然後我用'Notepad ++'檢查文件,看起來像'csv'。所以我使用read_csv,它工作得很好。祝你好運! – jezrael

+0

感謝您的信息 - 我用記事本++打開它也試圖看看,但你在哪裏看到它是csv的額外信息?我剛剛看到包含的文本數據。 – s666