gpt4 book ai didi

python - 重新排序数据透视表的列/行?

转载 作者:行者123 更新时间:2023-11-28 16:42:04 24 4
gpt4 key购买 nike

pandas 的 pivot_table 似乎只按字母顺序返回列,这样

pivot_table(tips, 'tip_pct', rows=['sex', 'day'], cols='smoker', aggfunc=len)

给出:

  smoker     No  Yes
sex day
Female Fri 2 7
Sat 13 15
Sun 14 4
Thur 25 7
Male Fri 2 8
Sat 32 27
Sun 43 15
Thur 20 10

如果我想将 Thur 放在 Fri 的上方,将 Yes 放在 No 的左侧,如何我去做吗?

最佳答案

使用 Categories ,在 pandas 0.15 中引入,'day' 和 'smoker' 列可以转换为具有预定义顺序的类别。 pivot_table() 将使它们保持排序。

>>> pt = pd.pivot_table(df, 'tip_pct', index=['sex', 'day'], columns='smoker', aggfunc=pd.np.sum)

smoker No Yes
sex day
Female Fri 0 4
Sat 0 5
Sun 0 5
Thu 9 3
Male Fri 0 4
Sat 1 5
Sun 1 5
Thu 9 3

>>> df["day"] = df["day"].astype('category', categories=["Thu", "Fri", "Sat", "Sun"])
>>> df["smoker"] = df["smoker"].astype('category', categories = ["Yes", "No"])
>>> pt = pd.pivot_table(df, 'tip_pct', index=['sex', 'day'], columns='smoker', aggfunc=pd.np.sum)

smoker Yes No
sex day
Female Thu 3 9
Fri 4 0
Sat 5 0
Sun 5 0
Male Thu 3 9
Fri 4 0
Sat 5 1
Sun 5 1

关于python - 重新排序数据透视表的列/行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18189981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com