Запись словарей в excel

Функция deal() возвращает список со словарями. Через цикл получаю n словарей и хочу их записать в excel, но записывается только последний словарь:

from fast_bitrix24 import Bitrix
from pprint import pprint
import pandas as pd
import time

def company(company_id):
    """вытягиваем данные с компании (TITLE', 'COMMENTS', 'PHONE',
                                     'EMAIL)
    и записываем в словарь my_dict"""

    company = b.get_all('crm.company.list',
                          {'select': ['TITLE', 'COMMENTS', 'PHONE',
                                     'EMAIL'],
                           'filter': {'ID': company_id}})
    company_dict = {}
    company_dict.update(company_dict)
    for item in company:
        company_dict = {'COMMENTS_COMPANY': item['COMMENTS'], 'TITLE_COMPANY': item['TITLE']}
        company_dict.update(company_dict)
        if 'EMAIL' in item:
                for i in item['EMAIL']:
                    email = {'EMAIL_COMPANY' : i['VALUE']}
                    company_dict.update(email)
        if 'PHONE' in item:
                for i in item['PHONE']:
                    phone = {'PHONE_COMPANY': i['VALUE']}
                    company_dict.update(phone)
    my_dict.update(company_dict)
    return company_dict

def contact(contact_id):
    """"вытягиваем данные с котакта ('NAME', 'SECOND_NAME', 'LAST_NAME', 'ADDRESS_CITY',
                                      'PHONE', 'EMAIL')
    и записываем в словарь my_dict"""
    contact = b.get_all('crm.contact.list',
                          {'select': ['NAME', 'SECOND_NAME', 'LAST_NAME', 'ADDRESS_CITY',
                                      'PHONE', 'EMAIL'],
                           'filter': {'ID': contact_id}})
    contact_dict = {}
    contact_dict.update(contact_dict)
    for item_contact in contact:
            contact_dict = {'ADDRESS_CITY_CONTACT': item_contact['ADDRESS_CITY'],
                             'LAST_NAME_CONTACT': item_contact['LAST_NAME'],
                             'NAME_CONTACT': item_contact['NAME'],
                             'SECOND_NAME_CONTACT': item_contact['SECOND_NAME']}
            contact_dict.update(contact_dict)
            if 'EMAIL' in item_contact:
                for i in item_contact['EMAIL']:
                        email = {'EMAIL_CONTACT': i['VALUE']}
                        contact_dict.update(email)
            if 'PHONE' in item_contact:
                for i in item_contact['PHONE']:
                        phone = {'PHONE_CONTACT': i['VALUE']}
                        contact_dict.update(phone)
    my_dict.update(contact_dict)
    return contact_dict

def deal():
    """Вытаскиваем данные из сделки 'ID', 'STAGE_ID', 'TITLE',
                                                    'OPPORTUNITY', 'BEGINDATE',
                                                    'DATE_CREATE', 'DATE_MODIFY',
                                                    'ASSIGNED_BY_ID', 'LEAD_ID',
                                                    'COMPANY_ID', 'CONTACT_ID'
    по указанной пользователем статуса"""
    deal_dict = {}
    deals = b.get_all('crm.deal.list', {'select': ['ID', 'STAGE_ID', 'TITLE',
                                                    'OPPORTUNITY', 'BEGINDATE',
                                                    'DATE_CREATE', 'DATE_MODIFY',
                                                    'ASSIGNED_BY_ID', 'LEAD_ID',
                                                    'COMPANY_ID', 'CONTACT_ID'],
                                         'filter': {'STAGE_ID': stage_dict[stage]}})
    for deal in deals:
        deal_dict = {'BEGINDATE': deal['BEGINDATE'], 'DATE_CREATE': deal['DATE_CREATE'],
                     'DATE_MODIFY': deal['DATE_MODIFY'], 'TITLE_DEAL': deal['TITLE']}
        my_dict.update(deal_dict)
    return deals

webhook = 'https://mycompany24.bitrix24.ru/rest/...........'
b = Bitrix(webhook)

print('Стадии сделки:')
print('Новая, В работе, Выставвление счета, Отправлен клиенту,\n'
      'Оплачен, Не оплачен, Сделка провалена, Сделка успешна')
stage_dict = {'новая': 'NEW', 'в работе': 5, 'выставление счета': 1, 'отправлен клиенту': 2,
'оплачен': 3, 'не оплачен': 4, 'сделка провалена': 'LOSE', 'сделка успешна': 'WON'}

my_dict = {}

stage = input('Введите статус сделки: ').lower()
if stage in stage_dict.keys():
    # print('id статуса', stage_dict[stage])
    for item in deal():
        print('id компании', item['COMPANY_ID'])
        print(item)
        company(item['COMPANY_ID'])
        contact(item['CONTACT_ID'])
        df = pd.DataFrame({'Статус сделки': [stage_dict[stage]],
                       'Название сделки': [my_dict['TITLE_DEAL']],
                       'Дата открытия сделки': [my_dict['BEGINDATE']],
                       'Дата изменения': [my_dict['DATE_MODIFY']],
                       'Компания': [my_dict['TITLE_COMPANY']],
                       'email компании': [my_dict['EMAIL_COMPANY']],
                       'Телефон компании': [my_dict['PHONE_COMPANY']],
                       'Комментарий от компании': [my_dict['COMMENTS_COMPANY']]})
        df.to_excel('./teamsis.xlsx', sheet_name='Сделки')

Ответы (0 шт):