gpt4 book ai didi

python - 我可以使用交叉表来获取用于求和的数据透视表吗?

转载 作者:行者123 更新时间:2023-12-05 08:42:15 25 4
gpt4 key购买 nike

我正在使用 crosstab 来汇总发布商在给定区域的销售额。原始数据框如下所示:

Publisher   NA_Sales    EU_Sales    JP_Sales
1 Nintendo 29.08 3.58 6.81
2 Nintendo 15.68 12.76 3.79
3 Nintendo 15.61 10.93 3.28
4 Nintendo 11.27 8.89 10.22
5 Nintendo 23.20 2.26 4.22

我用数据透视表做的,现在我想用交叉表做。

salespivot1=pd.pivot_table(df, index=df.Publisher,
aggfunc=np.sum).sort_values('NA_Sales', ascending=False)

创建:

          EU_Sales  JP_Sales    NA_Sales
Publisher
Nintendo 390.05 454.38 775.61
Electronic Arts 373.91 14.35 599.50
Activision 215.90 6.71 432.59
Sony Computer Entertainment 186.56 74.15 266.17
Ubisoft 161.99 7.52 252.74

但使用交叉表我无法重新创建此数据框,因为无论我做什么,它都会将 EU_Sales 堆叠在 NA_Sales 之上

salespivot3=pd.crosstab(index=df.Publisher, columns=['NA_Sales', 'EU_Sales'],
values=df.NA_Sales, aggfunc=sum)

创造:

col_0   NA_Sales
col_1 EU_Sales
Nintendo 775.61
Electronic Arts 599.50
Activision 432.59
Sony Computer Entertainment 266.17
Ubisoft 252.74

如何使用交叉表重新创建数据框以提供与数据透视表相同的结果?

最佳答案

不可能使用pd.crosstab()直接在您当前的 DF 上,除非您将它们从宽格式 reshape 为长格式,以便生成的 header 稍后将作为后续参数传递到它的函数调用中。

这里有一个小技巧:

idx = ["Publisher"]
d = pd.melt(df, id_vars=idx)
pd.crosstab(d.Publisher, d.variable, d.value, aggfunc="sum", rownames=idx, colnames=[None])

enter image description here

但老实说,您应该使用专为此目的设计的 groupby/pivot_table 方法。

关于python - 我可以使用交叉表来获取用于求和的数据透视表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42873838/

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