2016-05-15 3 views
2

Я пытаюсь читать в Excel файлов для панд из следующих адресов:с помощью панд для чтения в Ехчел из URL - 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) 

Однако это Безразлично «т работать, и я получаю ошибку:

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

После поиска на Google, кажется, что иногда .xls файлы, предлагаемые через URL-адрес являются переменным током поддерживаются в другом формате файлов за кадром, например html или xml.

Когда я вручную загружаю файл Excel и открываю его с помощью Excel, я получаю сообщение об ошибке: Формат файла и расширение не совпадают. Файл может быть поврежден или небезопасен. Если вы не доверяете это источник не открыть его»

Когда я открыть его, кажется, так же, как обычный Excel файл.

я наткнулся на пост в Интернете, который предложил мне открыть файл в текстовом редакторе чтобы узнать, есть ли какая-либо дополнительная информация в отношении правильного формата файла, но я не вижу никакой дополнительной информации при открытии с помощью notepad ++.

Может кто-нибудь, пожалуйста, помогите мне получить этот файл «xls», который прочитал в pandas 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, так что вы можете отфильтровать последний столбец f параметром usecols:

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 возвращает предупреждение, пока я открываю url с файлом. Затем я проверяю файл на «Notepad ++», и он выглядит как 'csv'. Поэтому я использую довольно read_csv, и он работает очень хорошо. Удачи! – jezrael

+0

Спасибо за информацию - я открыл ее, используя блокнот ++, чтобы попытаться посмотреть, но где вы видели дополнительную информацию о том, что это был csv? Я просто видел текстовые данные, содержащиеся внутри. – s666

Смежные вопросы