跳转至

188

本文总阅读量次 ,原创教程,严禁转载
@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,组合factorywarehouseretail 三个列名为一个维度,按照这种方法凑齐两个维度后,数据一定变长。

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列,所以数据一定变长。

上一个例子 下一个例子