Как объединить два кадра данных поочередно на основе ключа - PullRequest
0 голосов
/ 03 апреля 2019

У меня проблема слияния двух информационных кадров поочередно на основе ключа.

На самом деле я могу объединить два фрейма данных, но большой объем данных, который они только что перепутали, стал хаосом для чтения.

Первый кадр данных - это «продажи», а второй - «products_sales», который я восстанавливаю из базы данных.

Мне нужно, чтобы они более или менее слились с кодом продажи в таком порядке, чтобы я мог экспортировать их в файл CSV.

#i get the path and the cnxn from other places.
def sales_format(cnxn,path):
    csv_builder = []
    sales= open(path+'sales_no_products.csv')

    header_sales= vendas.readlines()[0]

    products= open(path+'products_sale.csv')
    header_products= produtos.readlines()[0]


    products= open(path+'products_sale.csv')
    sales= open(path+'sales_no_products.csv')
    line_products= products.readlines()[1:]
    line_sales= sales.readlines()[1:]



    product= pd.read_csv(path+'products_sale.csv',sep=';')
    sale= pd.read_csv(path+'sales_no_products.csv',sep=';')
    merging = pd.merge_ordered(sale, product, on='pedido', how='inner',left_by='pedido')

    print (merging)
    merging.to_csv(path+'test.csv', sep=';')

    #here is some commented code that in theory can do what i need, the problem here is that the large amount of columns makes it take 2 - 3 hours to complete.

    # for i in line_sales:
    #   csv_builder.append(header_sales.split(';'))
    #   id_sales= i.split(';')[1]
    #   csv_builder.append(i.split(';'))
    #   csv_builder.append(header_products.split(';'))

    #   for j in line_products:
    #       id_products_sale= j.split(';')[1]
    #       if(id_products_sale== id_sales):
    #           csv_builder.append(j.split(';'))


    #   csv_builder.append('---;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;-------------------------------------;')

    # file = open(path+"Sales.csv",'w')
    # writer = csv.writer(file,delimiter=';')
    # writer.writerows(csv_builder)

Мне нужно, чтобы результаты были структурированы как:

Заголовок продаж

  • Данные о продаже

    заголовок Product_sale

  • данные о продукте

  • данные о продукте
  • данные о продукте

...

заголовок продаж

  • Данные о продаже

    заголовок Product_sale

  • данные о продукте

  • данные о продукте
  • данные о продукте

...

В соответствии с запросом здесь распечатывается ожидаемый результат. CSV ожидаемый результат

Пример данных на изображении.

HeaderS1  HeaderS2  HeaderS3  HeaderS4  HeaderS5  HeaderS6  HeaderS7  HeaderS8  HeaderS9
'DataS1'  0  'DataS3'  12  'DataS5'  1111  23  'DataS8'  'DataS9'
HeaderP1  HeaderP2  HeaderP3  HeaderP4
'DataP1'  23  67  'DataP4'
'DataP1'  22  1212  'DataP4'
'DataP1'  11  39  'DataP4'
'DataP1'  1  342  'DataP4'

---------  ---------  ---------  ---------  ---------  ---------  ---------  ---------  ---------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...