Python: 在pandas中操作和聚合数据框

3

我有以下数据框:

dfdict = {'letter': ['a', 'a', 'a', 'b', 'b'], 'category': ['foo', 'foo', 'bar', 'bar', 'spam']}
df1 = pd.DataFrame(dfdict)

  category  letter
0   foo      a
1   foo      a
2   bar      a
3   bar      b
4   spam     b

我希望它能够输出类似于以下聚合计数df:
```html

```
     a    b
foo  2    0
bar  1    1
spam 0    1

这似乎是一个简单的操作。我已经弄清楚如何使用df1 = df1.groupby(['category','letter']).size()来获得:
category  letter
bar       a         1
          b         1
foo       a         2
spam      b         1

这更接近要求了,但现在我需要字母 a,b 在顶部,计数从下面开始。
1个回答

3
您可以使用。
pd.crosstab(df1.category,df1.letter)
Out[554]: 
letter    a  b
category      
bar       1  1
foo       2  0
spam      0  1

为了修复你的代码,在其中加入unstack
df1.groupby(['category','letter']).size().unstack(fill_value=0)
Out[556]: 
letter    a  b
category      
bar       1  1
foo       2  0
spam      0  1

太棒了,谢谢!一旦系统允许我,我会立即将其标记为正确的! :) - Liquidity
@Liquidity yw :-) 祝你编码愉快 - BENY

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接