我的熊猫df
设置如下:
product salesperson positionHours levelHours
0 soap john 10 25
1 nuts john 15 27
2 soap doug 12 29
3 nuts doug 11 24
4 soap tory 19 20
5 nuts tory 20 20
我正在努力实现以下目标,如何在熊猫中做到这一点?
product measurement john doug tory
0 soap positionHours 10 12 19
1 levelHours 25 29 20
3 nuts positionHours 15 11 20
4 levelHours 27 24 20
您将有多种方法可以做到这一点。想到的第一对夫妇:
融化,然后旋转:
(df.melt(["product", "salesperson"], var_name="measurement")
.pivot(index=["product", "measurement"], columns="salesperson", values="value")
.rename_axis(None, axis=1))
doug john tory
product measurement
nuts levelHours 24 27 20
positionHours 11 15 20
soap levelHours 29 25 20
positionHours 12 10 19
旋转然后堆叠
(df.pivot(index="product", columns="salesperson", values=["positionHours", "levelHours"])
.stack(0)
.rename_axis(index=["product", "measurement"], columns=None))
doug john tory
product measurement
nuts levelHours 24 27 20
positionHours 11 15 20
soap levelHours 29 25 20
positionHours 12 10 19
设置索引,然后执行unstack / stack组合
(df.set_index(["product", "salesperson"])
.rename_axis("measurement", axis=1)
.unstack(1)
.stack(0)
.rename_axis(None, axis=1))
doug john tory
product measurement
nuts levelHours 24 27 20
positionHours 11 15 20
soap levelHours 29 25 20
positionHours 12 10 19
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句