长/宽数据到宽/长

时间:2018-09-27 10:06:22

标签: python pandas panel-data

我有一个数据框,如下所示:

val conn = (database.connection as JdbcConnection).wrappedConnection

打印

import pandas as pd
d = {'decil': ['1. decil','1. decil','2. decil','2. decil','3. decil','3. decil'],
    'kommune': ['AA','BB','AA','BB','AA','BB'],'2010':[44,25,242,423,845,962],
    '2011':[64,26,239,620,862,862]}    
df = pd.DataFrame(data=d)

我想要的输出是这样的

decil      kommune  2010  2011
1. decil   AA       44    64
1. decil   BB       25    26
2. decil   AA      242   239
2. decil   BB      423   620
3. decil   AA      845   862
3. decil   BB      962   862

也就是说,我正在寻找一种将'decil'列从长格式更改为宽格式,同时将年列从宽格式更改为长格式的方法。我已经尝试过pd.pivot_table,循环运行并且没有任何运气。有什么解决办法吗?预先感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

Use set_index

stack unstack结合使用:

df = (df.set_index(['decil','kommune'])
        .stack()
        .unstack(0)
        .reset_index()
        .rename_axis(None, axis=1))

print (df)
  kommune level_1  1. decil  2. decil  3. decil
0      AA    2010        44       242       845
1      AA    2011        64       239       862
2      BB    2010        25       423       962
3      BB    2011        26       620       862