首页 > 解决方案 > 如何根据另一列统计DataFrame中某个值出现的次数?

问题描述

我有一个 Pandas DataFrame,它有两列:

     item1    label
0      a        0
1      a        1
2      b        0
3      c        0
4      a        1
5      a        0
6      b        0

综上,该栏目一共有三种item1。即,abc。该label列的条目是0或的值1

我想要做的是接收一个 DataFrame ,我可以在其中计算有多少条目item1具有labelvalue 1。使用上面的玩具示例,所需的 DataFrame 将类似于:

     item1    label
0      a        2
1      b        0
2      c        0

我怎样才能实现这样的目标?

我尝试使用以下代码行:

df[['item1', 'label']].groupby('item1').sum()['label']

但结果是 Pandas 系列,并且还显示了一些不需要的行为和属性。

标签: pythonpandas

解决方案


groupby不需要过滤之前的列,但您可以groupby为聚合指定列之后sum。对于 2 列 DataFrames 添加as_index=False参数:

df = df.groupby('item1', as_index=False)['label'].sum()

替代方法是使用Series.reset_index

df = df.groupby('item1')['label'].sum().reset_index()

print (df)
  item1  label
0     a      2
1     b      0
2     c      0

推荐阅读