首页 > 解决方案 > Python:按组计算数据帧中的特定出现次数

问题描述

假设我有一个df:

df = pd.DataFrame({'id': [12, 35, 37, 67, 99, 78],
                  'product': ['banana', 'apple', 'banana', 'pear', 'banana', 'apple'],
                  'reordered': [1, 0, 0, 1, 1, 1]})


    id     product   reordered
0   12     banana    1
1   35     apple     0
2   37     banana    0
3   67     pear      1
4   99     banana    1
5   78     apple     1

我想计算“产品”列中产品的出现次数,以及按产品分组的“重新排序”列中的值。期望的结果:

       product   count   reordered_0   reordered_1
   0   banana    3       1             2
   1   apple     2       1             1
   2   pear      1       1             0

请指教

标签: pythonpandasdataframecount

解决方案


使用crosstabwith DataFrame.insertfor 列作为第一个位置:

df = pd.crosstab(df['product'], df.reordered).add_prefix('reordered_')
df.insert(0, 'count', df.sum(axis=1))
df = df.reset_index().rename_axis(None, axis=1)
print(df)
  product  count  reordered_0  reordered_1
0   apple      2            1            1
1  banana      3            1            2
2    pear      1            0            1

推荐阅读