2017-09-13 1 views
1

Ich habe ein Datenrahmen, der wie dieser ich auch test_id aus einer SQL Server-DatenbankPivot Datenrahmen für to_sql

  id_1 id_2 id_3 ... 
date_1  1  3  4 
date_2  4  6  3 
date_3  5  7  1 
... 

sieht bin Abrufen mit SELECT @@IDENTITY;

Ich möchte diese Daten in eine vorhandene Tabelle anfügen in der gleiche SQL Server-Datenbank in diesem Format

TEST_ID DATE ID VALUE 
test_id date_1 id_1  1 
test_id date_1 id_2  3 
test_id date_1 id_3  4 
test_id date_2 id_1  4 
test_id date_2 id_2  6 
test_id date_2 id_3  3 
test_id date_3 id_1  5 
test_id date_3 id_2  7 
test_id date_3 id_3  1 

Wie kann ich den Datenrahmen vorzubereiten, so dass to sql wi schreibe ich es im gewünschten Format auf die Tabelle?

Ich habe versucht, den Index zurückzusetzen und zu schwenken, aber ich kann es nicht herausfinden.

+0

'melt' Sie original df – Wen

Antwort

1
d=d.reset_index().melt('index') 
d['TEST_ID']='TEST_ID' 
d.rename(columns={'index': 'DATE', 'variable': 'ID'}) 

    Out[147]: 
    DATE ID value TEST_ID 
0 date_1 id_1  1 TEST_ID 
1 date_2 id_1  4 TEST_ID 
2 date_3 id_1  5 TEST_ID 
3 date_1 id_2  3 TEST_ID 
4 date_2 id_2  6 TEST_ID 
5 date_3 id_2  7 TEST_ID 
6 date_1 id_3  4 TEST_ID 
7 date_2 id_3  3 TEST_ID 
8 date_3 id_3  1 TEST_ID 
1

Mit stack

In [3023]: (df.stack().reset_index(name='VALUE') 
       .rename(columns={'level_0': 'DATE', 'level_1': 'ID'}) 
       .assign(TEST_ID='test_id')) 
Out[3023]: 
    DATE ID VALUE TEST_ID 
0 date_1 id_1  1 test_id 
1 date_1 id_2  3 test_id 
2 date_1 id_3  4 test_id 
3 date_2 id_1  4 test_id 
4 date_2 id_2  6 test_id 
5 date_2 id_3  3 test_id 
6 date_3 id_1  5 test_id 
7 date_3 id_2  7 test_id 
8 date_3 id_3  1 test_id