При попытке создать dataframe из данных html-страницы возникает ошибка ValueError: Must pass 2-d input
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_html('/content/экспорт-таблицы.html')
На выходе вместо датафрейма получаю список [729 rows x 9 columns]. Пробую сформировать датафрейм из списка и получаю ошибку.
df_ = pd.DataFrame(df)
ValueError Traceback (most recent call last)
<ipython-input-26-862464d19d34> in <cell line: 1>()
----> 1 df_ = pd.DataFrame(df)
2 frames
/usr/local/lib/python3.10/dist-packages/pandas/core/internals/construction.py in _prep_ndarraylike(values, copy)
581 values = values.reshape((values.shape[0], 1))
582 elif values.ndim != 2:
--> 583 raise ValueError(f"Must pass 2-d input. shape={values.shape}")
584
585 return values
ValueError: Must pass 2-d input. shape=(1, 729, 9)
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Судя по ошибке:
ValueError: Must pass 2-d input. shape=(1, 729, 9)
^^^^^^^^^^^
У вас в df список из 1 (одного) датафрейма размером (729, 9).
Вам просто нужно взять первый элемент списка датафреймов, который вернула функция pd.read_html.
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_html('/content/экспорт-таблицы.html')[0]
^^^ вот тут
pd.read_html возвращает список датафреймов, потому что на странице может быть найдено много таблиц, и каждая таблица преобразуется в отдельный датафрейм, после чего возвращается список этих датафреймов.