原文传送门:https://www.cnblogs.com/zlslch/p/8644585.html
处理长表和宽表类的转换的时候之前总是自己写底层
但是底层写得太烂了,转换的速度总是不满意,pandas 的不断concat过程耗费的时间太久
然后就灵机一动
作为最热门的语言,python会不会有这种长表宽表的转换呢?
结果有的。。。。
import pandas as pd
import numpy as np
mydata=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"] #值(一般是度量指标)
)