假设我有以下形式的数据:
d = {'col1': ['State A','State A','State A', 'State B','State B'], 'col2': ['Town A', 'Town A', 'Town B', 'Town A','Town B']}
df = pd.DataFrame(data=d)
我想用一个groupby来计算a州和B州发生了多少次a镇和B镇的事件
State A Town A 2
Town B 1
State B Town A 1
Town B 1
这是什么语法?通常的groupby返回空数据帧,因为没有其他列。
df.groupby(['col1','col2']).count()
最佳答案
您可以添加['col2']
来修复代码
df.groupby(['col1','col2'])['col2'].count()
Out[150]:
col1 col2
State A Town A 2
Town B 1
State B Town A 1
Town B 1
Name: col2, dtype: int64
如果你需要分类
df1=df.groupby(['col1','col2'])['col2'].count().to_frame('value')
df1['helpcol']=df1.index.get_level_values(0)
df1.sort_values(['helpcol','value'],ascending=[True,True])
Out[164]:
value helpcol
col1 col2
State A Town B 1 State A
Town A 2 State A
State B Town A 1 State B
Town B 1 State B