С помощью Pandas для чтения в файл Excel с URL - XLRDError
Я пытаюсь читать в Excel файлы для Pandas по следующим URL:
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" в 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
Если это кому-то поможет... вы можете читать файл Google Диска прямо по URL-адресу в Excel без каких-либо требований входа в систему. Я пробовал в Google Colab, получилось.
- Загрузите файл XL на Google Диск или используйте уже загруженный
- Поделитесь файлом с кем угодно, у кого есть ссылка (я не знаю, работает ли только просмотр, но я пробовал с полным доступом)
- Скопируйте ссылку
У вас получится что-то вроде этого.
поделиться URL: https://drive.google.com/file/d/---some--long--string/view?usp=sharing
Получите URL-адрес загрузки при попытке загрузить файл (скопируйте URL-адрес оттуда)
Это будет примерно так: (у него тот же идентификатор файла google, что и выше)
скачать URL: https://drive.google.com/u/0/uc?id=---some--long--string&export=download
Теперь перейдите в Google Colab и вставьте следующий код:
import pandas as pd
fileurl = r'https://drive.google.com/file/d/---some--long--string/view?usp=sharing'
filedlurl = r'https://drive.google.com/u/0/uc?id=---some--long--string&export=download'
df = pd.read_excel(filedlurl)
df
Вот и все.. файл находится в вашем df.