原文传送门:https://www.cnblogs.com/zlslch/p/8644585.html
处理长表和宽表类的转换的时候之前总是自己写底层
但是底层写得太烂了,转换的速度总是不满意,pandas 的不断concat过程耗费的时间太久
然后就灵机一动
作为最热门的语言,python会不会有这种长表宽表的转换呢?
结果有的。。。。
import pandas as pdimport numpy as npmydata=pd.DataFrame({"Name":["苹果","谷歌","脸书","亚马逊","腾讯"],"Conpany":["Apple","Google","Facebook","Amozon","Tencent"],"Sale2013":[5000,3500,2300,2100,3100],"Sale2014":[5050,3800,2900,2500,3300],"Sale2015":[5050,3800,2900,2500,3300],"Sale2016":[5050,3800,2900,2500,3300] })
这个是一张宽表转换成长表只需要dataframe的一个属性
mydata1=mydata.melt(id_vars=["Name","Conpany"], #要保留的主字段var_name="Year", #拉长的分类变量value_name="Sale" #拉长的度量值名称 )如果长表转成宽表同样也只要一个属性就能搞定了!!!
mydata1.pivot_table(index=["Name","Conpany"], #行索引(可以使多个类别变量)columns=["Year"], #列索引(可以使多个类别变量)values=["Sale"] #值(一般是度量指标) )