pandas read_excel загружает только 5 строк

#python #pandas #openpyxl

#python #pandas #openpyxl

Вопрос:

Я работаю над чтением информации о списке ценных бумаг с помощью pandas, однако выяснилось, что я могу загрузить только 5 строк в свою среду, тот же код отлично работает на платформе colab.

Вот мой фрагмент кода

 url = r'https://www.hkex.com.hk/eng/services/trading/securities/securitieslists/ListOfSecurities.xlsx'
df_list = pd.read_excel(url,skiprows=2,engine="openpyxl")
 

информация о версии моей среды
python 3.9.1 (64-разрядная версия)
pandas 1.2.1
openpyxl 3.0.6

Что-то здесь не так? Пожалуйста, помогите советом. Спасибо!

Комментарии:

1. Мне пришлось загрузить xlsx файл и сохранить его в a csv , чтобы заставить его работать. В противном случае он также загружает только 5 строк. Я не знаю почему. Кроме того, если я сохранил его в новый xlsx файл, все строки были загружены .read_excel .

2. Получил тот же результат, что и @TrentonMcKinney

3. Я должен отметить, что я также использую openpyxl 3.0.6 and pandas 1.2.1 , но python 3.8.5 64-разрядный. Похоже, это проблема с файлом, поскольку он работает с новым файлом xlsx из сохранения как.

4. Проблема в том, что рабочий лист объявлен маленьким : <x:dimension ref="A1:U8" /> . Pandas, вероятно, использует openpyxl в режиме только для чтения для ускорения и использует эту информацию, если она доступна. Непосредственно в openpyxl вы можете обойти это.

Ответ №1:

Это очень странно, так как для меня это тоже не работало. Но я придумал использовать следующее, которое фактически использует openpyxl

 from openpyxl import load_workbook
import urllib
from io import BytesIO

url = r'https://www.hkex.com.hk/eng/services/trading/securities/securitieslists/ListOfSecurities.xlsx'
wb = load_workbook(filename = BytesIO(urllib.request.urlopen(url).read()))
ws = wb.active
data = list(ws.values)
df_list = pd.DataFrame(data[2:], columns=data[3])
 

Комментарии:

1. Похоже, это ошибка openpyxl, я меняю движок на использование xlrd 1.1.0, и теперь программа работает нормально