【发布时间】:2017-08-09 23:23:02
【问题描述】:
我使用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
如何使用交叉表重新创建数据框以提供与枢轴相同的结果?
【问题讨论】:
-
你能发布你想要的数据集/DF吗?
-
我不明白它与
crosstab()函数有什么关系。你追求的是:df.groupby('Publisher', as_index=False).sum()? -
好的,我正在学习 gropuby、数据透视表和交叉表是如何工作的。根据我的理解,正确编码后它们应该会产生类似的结果,但是我无法使用交叉表重新创建数据框,使其与使用 groupby 或 pivot_table 相同。你能帮我解决这个问题吗?
标签: python pandas dataframe pivot-table