pandas 行列转换总结

pandas 行列转换总结

数据

物流数据
行转列或者列转行的数据一般都是groupby后的数据
b = kd.groupby(by=[“当前网点”, “留仓原因”], as_index=False)[“运单编号”].count()
c = kd.groupby(by=[“当前网点”, “留仓原因”])[“运单编号”].count()
(as_index=False)同groupby后再 reset_index()。
pandas默认groupby后将聚类的特征设置为index。
b和c为两个不同的dateframe,在stack和unstack进行行列转置时转换的实际是index和column,而pivot_table、pivot、melt 转置的是特征的数据。
groupby后的数据
在这里插入图片描述

stack、unstack

print(bd.set_index(["当前网点", "留仓原因"]).unstack(level=1))

在这里插入图片描述

print(bd.set_index(["当前网点","留仓原因"]).unstack(level=1).stack())

在这里插入图片描述

print(bd.set_index(["当前网点","留仓原因"]).unstack(level=1).stack().reset_index())

在这里插入图片描述

unstack index最外层转到columns最外层,level 控制层
stack columns最外层转到index最外层,level控制层

pivot,pivot_table,melt

print(bd.pivot_table("运单编号",index="当前网点",columns="留仓原因",aggfunc="sum",margins=True,margins_name="总和"))

print(pd.pivot_table(bd,"运单编号", index="当前网点", columns="留仓原因", aggfunc="sum", margins=True, margins_name="总和"))

两种写法效果一致
在这里插入图片描述
在这里插入图片描述

   gg=bd.pivot("当前网点","留仓原因","运单编号")
   print(gg)

在这里插入图片描述
melt的作用类似于stack

   g = pd.melt(g, id_vars=['当前网点'],
             value_vars=['操作原因', '车线衔接原因'],
             var_name='留仓原因', value_name='数量')

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_15114041/article/details/84974497