Pandas melt和pivot_table的使方法
阿新 • • 發佈:2018-12-16
Melt英語就是熔化,Pivot是轉動的意思,原表格
zt | date | 合計 | 企財險 | 家財險 | 車險 | 貨運險 | 工程險 | 責任險 | 短期意外險 | 短期健康險 | 船舶險 | 農業險 | 信用險 | 保證險 | 其他險 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 產險合計 | 2016-09 | 271668.28 | 2979.89 | 900.05 | 201922.92 | 496.02 | 537.98 | 4832.15 | 4167.16 | 29662.65 | 0.0 | 24160.47 | 196.39 | 1800.19 | 12.37 |
1 | 人財險 | 2016-09 | 121711.67 | 1542.56 | 566.86 | 76177.54 | 343.91 | 2.08 | 2611.88 | 522.27 | 25219.82 | 0.0 | 14491.42 | 196.18 | 37.16 | 0.00 |
2 | 太產險 | 2016-09 | 18134.41 | 488.14 | 42.89 | 12007.21 | 34.11 | 0.00 | 565.89 | 1586.64 | 2275.04 | 0.0 | 1130.95 | 0.00 | 3.54 | 0.00 |
3 | 平產險 | 2016-09 | 29834.30 | 452.68 | 14.49 | 28006.03 | 58.88 | 160.85 | 462.46 | 630.04 | 48.66 | 0.0 | 0.00 | 0.21 | 0.00 | 0.00 |
melt之前的bf的columns
Index(['zt', 'date', '合計', '企財險', '家財險', '車險', '貨運險', '工程險', '責任險', '短期意外險',
'短期健康險', '船舶險', '農業險', '信用險', '保證險', '其他險'],
dtype='object')
使用melt和pivot_table
#將zt,date變成index,列名(險種)變成了一個variable
bfm=pd.melt(bf,id_vars=['zt','date'])
#根據date列裡的元素變成若根列
bfp=bfm.pivot_table(index=['zt','variable'],columns='date').reset_index()
melt之後bfm
zt | date | variable | value | |
---|---|---|---|---|
0 | 產險合計 | 2016-09 | 合計 | 271668.28 |
1 | 人財險 | 2016-09 | 合計 | 121711.67 |
2 | 太產險 | 2016-09 | 合計 | 18134.41 |
3 | 平產險 | 2016-09 | 合計 | 29834.30 |
4 | 華財險 | 2016-09 | 合計 | 0.00 |
pivot_table之後bfp
zt | date | 2016-09 | 2017-09 | 2018-09 | |
---|---|---|---|---|---|
0 | 中聯合 | 企財險 | 38.57 | 83.80 | 135.91 |
1 | 中聯合 | 保證險 | 1.88 | 2.13 | 1.98 |
2 | 中聯合 | 信用險 | 0.00 | 0.00 | 0.00 |
3 | 中聯合 | 其他險 | 0.00 | 0.00 | 0.00 |
4 | 中聯合 | 農業險 | 7916.90 | 8131.71 | 7560.63 |