Как мне справиться с тем, что pandas не может прочитать тип ‘WindowsPath’ из pathlib?

#pandas #typeerror #pathlib

#pandas #ошибка типа #pathlib

Вопрос:

Я пытаюсь прочитать html-файлы в pd.read_html(). Однако каждый файл .html находится в другом каталоге. Итак, я перебрал каждый каталог и поместил path/name html_file_name в список с именем html_paths . Я хочу выполнить итерацию по этому списку и прочитать каждый HTML-файл в html_paths с помощью pd.read_html()

Я попытался выполнить итерацию по html_paths следующим образом:

 for I in range(len(html_paths)):
     html_files = pd.read_html(html_paths[i])
  

Я также попытался глобализировать исходные html_paths, которые я настроил с помощью этого:

 for I in path.glob('**/*.html'):
     html_files = pd.read_html(i)
  

Любым способом, которым я пытаюсь выполнить итерацию по моему списку библиотек path, я получаю ошибку, похожую на TypeError: Cannot read object type 'WindowsPAth'

До сих пор я писал:

 # initialize path
p = Path('C:pathtomotherdirectory')

# iterate over all directories within mother directory
# glob all html files
html_paths = [file for file in p.glob('**/*.html')
  

И теперь я хочу перебрать каждый файл в html_paths и прочитать их в pd.read_html()

Ответ №1:

Ваш html_paths список содержит объекты Path, а не строки, подобные ожидаемым read_html . Попробуйте преобразовать его в строку:

 for I in range(len(html_paths)):
    html_files = pd.read_html(str(html_paths[I]))
  

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

1. Похоже, что теперь это приводит к ValueError сообщению «таблицы не найдены»

2. Вы уверены, что в HTML-файле, который вы пытаетесь проанализировать, есть таблица? Я не пользователь pandas. Похоже, ваша первая проблема решена, и у вас есть новая ошибка / вопрос, над которым нужно поработать.

3. О, подождите, я вижу, что могу использовать pd.read_html(), если я приведу html_paths в виде строки по одному индексу за раз (например, pd.read_html(str(html_paths[0])) дает мне желаемый результат). Однако, когда я пытаюсь выполнить итерацию по ним, как в вашем примере, выдается ошибка «Таблицы не найдены».

4. И отчасти моя проблема была решена, поскольку теперь я знаю, как преобразовать html_paths в строку, чтобы прочитать ее в функции pd.read_html(). Но основной смысл моего вопроса состоял в том, чтобы добраться до точки, где я мог перебирать каждый файл и считывать его в pandas. Кроме того, я уверен, что в каждом html-файле есть таблица. Я могу читать их по отдельности, просто возникают проблемы с их повторением.

5. У меня была опечатка в моем ответе, переменная цикла I была заглавной в for I in части, но не в html_paths[I] части. Я исправил это в ответе.