Python Pandas-在groupby中应用过滤器

Python Pandas-在groupby中应用过滤器,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,我正在尝试在数据帧中执行group by函数。我需要做两次聚合,以查找总计数和基于一列筛选的计数 product, count, type prod_a,100,1 prod_b,200,2 prod_c,23,3 prod_d,23,1 我正在尝试创建一个列的轴心,列1包含已售出产品的数量,列2包含按类型1列出的产品数量 我能够获得已售出产品的数量,但我不确定如何应用过滤器并获得已售出产品的数量 如果只需要按一个条件计数,如type==1,则使用: 要提高性能,请先创建列,然后聚合总和: 对

我正在尝试在数据帧中执行group by函数。我需要做两次聚合,以查找总计数和基于一列筛选的计数

product, count, type
prod_a,100,1
prod_b,200,2
prod_c,23,3
prod_d,23,1
我正在尝试创建一个列的轴心,列1包含已售出产品的数量,列2包含按类型1列出的产品数量

我能够获得已售出产品的数量,但我不确定如何应用过滤器并获得已售出产品的数量


如果只需要按一个条件计数,如type==1,则使用:

要提高性能,请先创建列,然后聚合总和:

对于所有组合,请使用:


如果只需要按一个条件计数,如type==1,则使用:

要提高性能,请先创建列,然后聚合总和:

对于所有组合,请使用:

       sold, type_1
prod_a,1,1
prod_b,1,0
prod_c,1,0
prod_d,1,1
df("product").agg({'count': [('sold', 'count')]})
df2 = df.groupby("product").agg(sold = ('count','count'),
                                type_1= ('type', lambda x: (x == 1).sum()))
print (df2)

         sold  type_1
product              
prod_a      1       1
prod_b      1       0
prod_c      1       0
prod_d      1       1
df2 = (df.assign(type_1 = df['type'].eq(1).astype(int))
         .groupby("product").agg(sold = ('count','count'),
                                 type_1 = ('type_1','sum')))
df1 = pd.crosstab(df['product'], df['type']).add_prefix('type_')
df2 = df.groupby("product").agg(sold = ('count','count')).join(df1)
print (df2)
         sold  type_1  type_2  type_3
product                              
prod_a      1       1       0       0
prod_b      1       0       1       0
prod_c      1       0       0       1
prod_d      1       1       0       0