Обновите файл Excel с первой строкой HTML-таблицы (pandas / python) - PullRequest
0 голосов
/ 24 февраля 2019

Я хочу обновить свои данные, которые я экспортировал из HTML-таблицы, чтобы преуспеть.
Проблема в том, что я хочу сохранить старые данные.

У меня есть 3 датчика температуры, у каждого есть веб-страница, на которой я получаю данные и экспортирую их в файл Excel.
Каждый датчик имеет несколько страниц, так как данных много.

Мне удалось экспортировать все в файлы .xlsx, но при повторном запуске сценария самая старая строка данных теряется, поскольку на веб-странице отображаются только данные (около 30 дней).

Что он делает:
Считывание каждой страницы от 1 до 25 для каждого датчика, помещение всех данных с датчика в отдельный файл Excel.

Чтоон должен сделать:
Проверить, соответствует ли первая строка в таблице HTML первой строке в таблице Excel, если true, ничего не делать, если false, добавить новую строку сверху в таблице Excel.

Ида, я знаю, что код не очень хорошо оптимизирован, так как я не очень долго работаю с pyton.Любая помощь для переменных для URL очень ценится (URL-адреса не совпадают, хотя -> page = n и deviceid = x)

Вот код:

import pandas as pd

print "Starting fenster 3.."


fenster_3_seite_25, = pd.read_html("URL", header=0)
... ##deleted other rows for overview
fenster_3_seite_1, = pd.read_html("URL", header=0)

print "Collecting data for fenster 3 done! Creating file fenster_3.xlsx"

fenster_komplett = pd.concat([fenster_3_seite_1, fenster_3_seite_2, fenster_3_seite_3, fenster_3_seite_4, fenster_3_seite_5, fenster_3_seite_6, fenster_3_seite_7, fenster_3_seite_8, fenster_3_seite_9, fenster_3_seite_10, fenster_3_seite_11, fenster_3_seite_12, fenster_3_seite_13, fenster_3_seite_14, fenster_3_seite_15, fenster_3_seite_16, fenster_3_seite_17, fenster_3_seite_18, fenster_3_seite_19, fenster_3_seite_20, fenster_3_seite_21, fenster_3_seite_22, fenster_3_seite_23, fenster_3_seite_24, fenster_3_seite_25], ignore_index=True)
fenster_komplett.to_excel("fenster_3.xlsx", index=False)

print "Fenster 3 done!"

print "Starting privat.."


privat_seite_25, = pd.read_html("URL", header=0)
... ##deleted other rows for overview
privat_seite_1, = pd.read_html("URL", header=0)

print "Collecting data for privat done! Creating file privat.xlsx"

privat_komplett = pd.concat([privat_seite_1, privat_seite_2, privat_seite_3, privat_seite_4, privat_seite_5, privat_seite_6, privat_seite_7, privat_seite_8, privat_seite_9, privat_seite_10, privat_seite_11, privat_seite_12, privat_seite_13, privat_seite_14, privat_seite_15, privat_seite_16, privat_seite_17, privat_seite_18, privat_seite_19, privat_seite_20, privat_seite_21, privat_seite_22, privat_seite_23, privat_seite_24, privat_seite_25], ignore_index=True)
privat_komplett.to_excel("privat.xlsx", index=False)

print "Privat done!"

print "Starting tuer 3.."


tuer_3_seite_25, = pd.read_html("URL", header=0)
... ##deleted other rows for overview
tuer_3_seite_1, = pd.read_html("URL", header=0)

print "Collecting data for tuer_3 done! Creating file tuer_3.xlsx"

tuer_komplett = pd.concat([tuer_3_seite_1, tuer_3_seite_2, tuer_3_seite_3, tuer_3_seite_4, tuer_3_seite_5, tuer_3_seite_6, tuer_3_seite_7, tuer_3_seite_8, tuer_3_seite_9, tuer_3_seite_10, tuer_3_seite_11, tuer_3_seite_12, tuer_3_seite_13, tuer_3_seite_14, tuer_3_seite_15, tuer_3_seite_16, tuer_3_seite_17, tuer_3_seite_18, tuer_3_seite_19, tuer_3_seite_20, tuer_3_seite_21, tuer_3_seite_22, tuer_3_seite_23, tuer_3_seite_24, tuer_3_seite_25], ignore_index=True)
tuer_komplett.to_excel("tuer_3.xlsx", index=False)

print "Tuer 3 done!"

Спасибо за помощь и извините за плохой английский:)

1 Ответ

0 голосов
/ 24 февраля 2019

Возможно, это не самый эффективный способ сделать это.Но если у вас есть поле даты в данных, вы можете просто импортировать старые данные сначала с помощью pd.read_excel (), затем добавить их в функцию pd.concat () и затем выполнить drop_duplicates () для них.Смотрите пример ниже.

existing_excel = pd.read_excel(excel_path,sheet_name)
final_excel = pd.concat([existing_excel,new_pd1,new_pd2])
final_excel.drop_duplicates(inplace=True)
final_excel.to_excel(excel_path)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...