首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用pandas pivot,如excel pivot

尝试使用pandas pivot,如excel pivot
EN

Stack Overflow用户
提问于 2016-09-25 17:50:59
回答 1查看 425关注 0票数 0

我有一个像这样的熊猫数据框,我想使用pd.pivot_table对其进行透视

代码语言:javascript
复制
import pandas
df = pd.DataFrame({"Id":[1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 10],
                   "Error":[0, 99, 0, 0, 0, 98, 0, 0, 0, 0, 33, 0, 23, 0, 0, 0, 83, 0]})

我试着像这样旋转它(在Excel中制作旋转):

我试过这个:

代码语言:javascript
复制
dfPivot = pd.pivot_table(df, index = "Id", columns = df.Error.unique(), values = "Error", aggfunc="count")

我得到了以下错误。

代码语言:javascript
复制
AssertionError: Grouper and axis must be same length

提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-25 17:52:59

IIUC你可以这样做:

代码语言:javascript
复制
In [7]: df.pivot_table(index='Id', columns='Error', aggfunc='size', fill_value=0)
Out[7]:
Error  0   23  33  83  98  99
Id
1       1   0   0   0   0   1
2       2   0   0   0   0   0
3       1   0   0   0   1   0
4       2   0   0   0   0   0
5       2   0   0   0   0   0
6       1   0   1   0   0   0
7       1   1   0   0   0   0
8       2   0   0   0   0   0
9       0   0   0   1   0   0
10      1   0   0   0   0   0

In [8]: df.pivot_table(index='Id', columns='Error', aggfunc='size', fill_value='')
Out[8]:
Error 0  23 33 83 98 99
Id
1      1              1
2      2
3      1           1
4      2
5      2
6      1     1
7      1  1
8      2
9               1
10     1

如果你想使用Grand Total --你可以使用margins=True参数,但这有点棘手:

代码语言:javascript
复制
In [42]: df.pivot_table(index='Id', columns='Error', aggfunc='size', fill_value=0, margins=True)
...skipped...
TypeError: 'str' object is not callable

但是这个老生常谈的变种可以工作:

代码语言:javascript
复制
In [43]: (df.assign(x=0)
   ....:    .pivot_table(index='Id', columns='Error', aggfunc='count',
   ....:                 fill_value=0, margins=True, margins_name='Grand Total')
   ....:    .astype(int)
   ....: )
Out[43]:
              x
Error         0 23 33 83 98 99 Grand Total
Id
1             1  0  0  0  0  1           2
2             2  0  0  0  0  0           2
3             1  0  0  0  1  0           2
4             2  0  0  0  0  0           2
5             2  0  0  0  0  0           2
6             1  0  1  0  0  0           2
7             1  1  0  0  0  0           2
8             2  0  0  0  0  0           2
9             0  0  0  1  0  0           1
10            1  0  0  0  0  0           1
Grand Total  13  1  1  1  1  1          18
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39685518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档