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