Как записать в существующий файл Excel без перезаписи существующих данных с помощью панд - PullRequest
0 голосов
/ 09 октября 2019

Я знаю, что подобные вопросы были опубликованы ранее, но я не нашел что-то подходящее для этого случая. Я надеюсь, что вы можете помочь.

Вот краткое изложение проблемы:

  1. Я пишу код веб-очистки с использованием селена (для назначения)
  2. В коде используется цикл for для перехода с одной страницы на другую
  3. Вывод кода представляет собой информационный кадр с каждого номера страницы, который импортируется в Excel. (в основном таблица)
  4. Кадры данных со всех веб-страниц, которые должны быть записаны только на одном листе Excel (не несколько листов в файле Excel)
  5. Каждая веб-страница имеет одинаковый формат данных (т.е. количество столбцов и заголовков столбцов одинаковы, но значения строк различаются ..)
  6. Для информации, я использую панд, поскольку она помогает преобразовать вывод с веб-сайта в excel

Проблема, с которой я сталкиваюсь, заключается в том, что когда кадр данных экспортируется в Excel, он перезаписывает данные предыдущей итерации. следовательно, когда я выполню код и очистка будет завершена, я получу данные только из последней итерации цикла.

Пожалуйста, посоветуйте строки кодирования, которые мне нужно добавить, чтобы всеитерациями, которые будут записаны в листе Excel, другими словами и, более конкретно, каждая итерация должна экспортировать данные в Excel, начиная с первой пустой строки.

Вот выдержка из кода:

for i in range(50, 60):  
    url= (urlA + str(i)) #this is the url generator, URLA is the main link excluding pagination

    driver.get(url)

    time.sleep(random.randint(3,7))

    text=driver.find_element_by_xpath('/html/body/pre').text

    data=pd.DataFrame(eval(text))

    export_excel = data.to_excel(xlpath)

1 Ответ

1 голос
/ 09 октября 2019

Спасибо, Дейкграаф. Ваше предложение сработало.

Вот полный код для других (для дальнейшего использования).

извинения за шрифт, не могу установить его правильно. В любом случае, надежда ниже может пригодиться кому-то в будущем.

xlpath= "c:/projects/excelfile.xlsx"

df=pd.DataFrame() #creating a data frame before the for loop. (dataframe is empty before the for loop starts)

Url= www.your website.com 

for i in irange(1,10): 

       url= (urlA + str(i)) #this is url generator for pagination (to loop thru the page) 

       driver.get(url)  

       text=driver.find_element_by_xpath('/html/body/pre').text # gets text from site

       data=pd.DataFrame(eval(text)) #evalues the extracted text from site and converts to Pandas dataframe 

       df=df.append(data) #appends the dataframe (df) specificed before the for-loop and adds the new (data)

export_excel = df.to_excel(xlpath)  #exports consolidated dataframes (df) to excel
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...