[英]Pandas Groupby & Pivot
我有一個熊貓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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.