我有一个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对象转换为数据帧。我找不到解决这个问题的方法。有更简单的方法吗?
感谢任何帮助或指示。谢谢!
答案 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