第188个小例子:melt透视数据小技巧
编辑日期: 2024-11-28 文章阅读: 次
@author jackzhenguo
@desc
@tag
@version
@date 2020/03/26
第188个小例子:melt透视数据小技巧
melt 方法固定某列为一个维度,组合其他列名为另一个维度,实现宽表融化为长表:
zip_code factory warehouse retail
0 12345 100 200 1
1 56789 400 300 2
2 101112 500 400 3
3 131415 600 500 4
固定列zip_code
,组合factory
,warehouse
,retail
三个列名为一个维度,按照这种方法凑齐两个维度后,数据一定变长。
pandas 的 melt 方法演示如下:
In [49]: df = df.melt(id_vars = "zip_code")
若melt方法,参数value_vars
不赋值,默认剩余所有列都是value_vars,所以结果如下:
zip_code variable value
0 12345 factory 100
1 56789 factory 400
2 101112 factory 500
3 131415 factory 600
4 12345 warehouse 200
5 56789 warehouse 300
6 101112 warehouse 400
7 131415 warehouse 500
8 12345 retail 1
9 56789 retail 2
10 101112 retail 3
11 131415 retail 4
若只想查看 factory 和 retail,则 value_vars
赋值为它们即可:
In [62]: df_melt2 = df.melt(id_vars = "zip_code",value_vars=['factory','reta
...: il'])
结果:
zip_code variable value
0 12345 factory 100
1 56789 factory 400
2 101112 factory 500
3 131415 factory 600
4 12345 retail 1
5 56789 retail 2
6 101112 retail 3
7 131415 retail 4
melt 透视数据后,因为组合多个列为1列,所以数据一定变长。