Pandas groupby在两列没有给出正确的数据框架

时间:2016-03-30 15:45:49

标签: pandas

我有一个pandas数据帧:

+----------------+--+
|    class  name |  |
+----------------+--+
| 0     A    a1  |  |
| 1     A    a2  |  |
| 2     A    a3  |  |
| 3     A    a1  |  |
| 4     B    b2  |  |
| 5     C    c1  |  |
|                |  |
+----------------+--+

我试图获得关于班级的“名称”列的计数。我正在使用groupby函数。这是我正在寻找的新数据框:

+---------------------+--+
| class name    Count |  |
+---------------------+--+
| A      a1      2    |  |
| A      a2      1    |  |
| A      a3      1    |  |
| B      b2      1    |  |
| C      c1      1    |  |
|                     |  |
+---------------------+--+

我使用了以下代码行:

mydf.groupby(['class','name'])['name'].count()
and got the following result:

+------------------+--+
|   class  name    |  |
+------------------+--+
| A      a1      2 |  |
|        a2      1 |  |
|        a3      1 |  |
| B      b2      1 |  |
| C      c1      1 |  |
|                  |  |
+------------------+--+

有什么方法可以修复“课程”栏目吗?我知道有足够的问题将groupby对象转换为数据帧。我找不到解决这个问题的方法。有更简单的方法吗?

感谢任何帮助或指示。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以将reset_index与参数name='count'

一起使用
print mydf.groupby(['class','name'])['name'].count().reset_index(name='count')
  class name  count
0     A   a1      2
1     A   a2      1
2     A   a3      1
3     B   b2      1
4     C   c1      1

但汇总size更好:

print mydf.groupby(['class', 'name']).size().reset_index(name='count')
  class name  count
0     A   a1      2
1     A   a2      1
2     A   a3      1
3     B   b2      1
4     C   c1      1