托管数据帧为to_sql

时间:2017-09-13 16:53:10

标签: python sql pandas

我有一个看起来像这样的数据框

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

我也在使用test_id

从SQL Server数据库中检索SELECT @@IDENTITY;

我想将此数据以此格式附加到同一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

如何准备Dataframe以便to sql以所需格式将其写入表中?

我已经尝试重置索引和旋转,但我无法理解。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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