Python:按组计算数据帧中的特定出现次数

Agn*_*Lee 2 python count dataframe pandas

假设我有一个 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
Run Code Online (Sandbox Code Playgroud)

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

       product   count   reordered_0   reordered_1
   0   banana    3       1             2
   1   apple     2       1             1
   2   pear      1       1             0
Run Code Online (Sandbox Code Playgroud)

请指教

jez*_*ael 6

使用crosstabDataFrame.insert用于第一位置列:

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
Run Code Online (Sandbox Code Playgroud)


Qua*_*ang 5

让我们试试crosstab

(pd.crosstab(df['product'], df['reordered'])
   .add_prefix('reordered_')
   .assign(count=lambda x: x.sum(1))
   .reset_index()
)
Run Code Online (Sandbox Code Playgroud)

输出:

reordered product  reordered_0  reordered_1  count
0           apple            1            1      2
1          banana            1            2      3
2            pear            0            1      1
Run Code Online (Sandbox Code Playgroud)