2017-09-13 67 views
1

我有一个数据帧,看起来像这样透视数据帧的to_sql

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

我也SELECT @@IDENTITY;

我想这个数据追加到现有的表中检索test_id从SQL Server数据库这种格式

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 

我怎么可以准备数据帧相同的SQL Server数据库,这样to sql无线将它以所需的格式写入表格?

我试图重置索引和pivoting,但我无法弄清楚。

+0

'melt'你原来的DF – Wen

回答

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

使用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