Groupby and count() on dataframe having two categorical variables
本问题已经有最佳答案,请猛点这里访问。
我有一个数据集,需要GroupBy()并找到每个唯一组合的计数。
1 2 3 4 5 6 | body-style make 0 convertible alfa-romeo 1 convertible alfa-romeo 2 hatchback alfa-romeo 3 sedan audi 4 sedan audi |
我需要生成如下所示的输出:
1 2 3 4 | make body-style count 0 alfa-romero convertible 2 1 alfa-romero hatchback 1 2 audi sedan 2 |
已尝试以下代码:
1 2 3 | body = pd.DataFrame({'make':['alfa-romeo','alfa-romeo','alfa-romeo','audi','audi'], 'body-style':['convertible','convertible','hatchback','sedan','sedan']}) body.groupby(by=['make','body-style'], as_index=False).count() |
此聚合引发"列表索引超出范围"错误。但是,当我从groupby子句中删除任意一列时,它可以为我提供按剩余列分组的计数。
如果删除时为"index=false",则没有错误,但结果对象将同时具有列样式和正文样式作为索引的一部分,并且不会有任何计数数据。
我可以在数据框中添加另一列,用1s填充它,在groupby上取一个
只有在至少有一列尚未用于分组时,才能使用
如果按df中的所有列分组,则使用
1 2 3 4 5 6 | In [119]: body.groupby(['make','body-style']).size().reset_index(name='count') Out[119]: make body-style count 0 alfa-romeo convertible 2 1 alfa-romeo hatchback 1 2 audi sedan 2 |