#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
файл и сохранить его в acsv
, чтобы заставить его работать. В противном случае он также загружает только 5 строк. Я не знаю почему. Кроме того, если я сохранил его в новыйxlsx
файл, все строки были загружены.read_excel
.2. Получил тот же результат, что и @TrentonMcKinney
3. Я должен отметить, что я также использую
openpyxl 3.0.6
andpandas 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, и теперь программа работает нормально