Как правильно добавлять данные в xlsx через pandas
Всем привет, кто подскажет как через pandas добавлять данные в файл не перезатерая предыдущие записи? Есть вот такой вот цикл, но в файл попадает только последний продукт
for item in product_nodes:
name = item.find('div', class_='list-filter-result__name').text.strip()
url_product = item.find('div', class_='list-filter-result__name').find(
'a').get('href')
vendor_code = item.find('a', class_='prdct-artcl').text.replace(
'Код товара:', '').strip()
try:
price = item.find('span',
class_='list-filter-result-price__valid').text\
.strip().replace(' ','')
price = re.findall(r'(^\d+)', price)[0]
except:
price = '0'
df_marks = pd.DataFrame({'артикул': [vendor_code],
'наименование': [name],
'price': [price],
'category': [category],
'url': [url_product]})
writer = pd.ExcelWriter('test.xlsx')
df_marks.to_excel(writer, index=False)
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Примерно так можно собрать в список словарей значения:
data = []
for item in product_nodes:
# тут ваш код для разбора данных в переменные
...
data.append({'артикул': vendor_code,
'наименование': name,
'price': price,
'category': category,
'url': url_product})
# цикл кончился, делаем датафрейм
df_marks = pd.DataFrame(data)
df_marks.to_excel('test.xlsx', index=False)
Pandas одинаково нормально воспринимает и список словарей и словарь списков, можно и так и так данные собирать - и в отдельные списки, а потом из них словарь сделать, а можно как тут делать словари и собирать их в список.
P.S. А если всё-таки нужен ExcelWriter, то не забывайте использовать менеджер контекста, чтобы файл правильно закрылся:
with pd.ExcelWriter('test.xlsx') as writer:
df_marks.to_excel(writer, index=False)