熊猫 - 按组应用过滤器

我正在尝试在数据帧中按函数执行组。我需要完成两个聚合,以查找总数并根据一列的筛选找到计数


product, count, type

prod_a,100,1

prod_b,200,2

prod_c,23,3

prod_d,23,1

我正在尝试创建一个列透视表,其中包含已售出的产品计数,并且具有按以下方式计算的产品计数column 1column 2type 1


       sold, type_1

prod_a,1,1

prod_b,1,0

prod_c,1,0

prod_d,1,1

我能够获得已售产品的数量,但我不知道如何应用过滤器并获取已售产品的计数prod_a


df("product").agg({'count': [('sold', 'count')]})


qq_遁去的一_1
浏览 75回答 1
1回答

慕尼黑的夜晚无繁华

如果只需要按一个条件计数,请使用 GroupBy.agg 和命名聚合:type==1df2 = df.groupby("product").agg(sold = ('count','count'),                                type_1= ('type', lambda x: (x == 1).sum()))print (df2)         sold  type_1product              prod_a      1       1prod_b      1       0prod_c      1       0prod_d      1       1为了提高性能,首先创建列,然后聚合:sumdf2 = (df.assign(type_1 = df['type'].eq(1).astype(int))         .groupby("product").agg(sold = ('count','count'),                                 type_1 = ('type_1','sum')))对于所有组合,将交叉表与 DataFrame.join 结合使用: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_3product                              prod_a      1       1       0       0prod_b      1       0       1       0prod_c      1       0       0       1prod_d      1       1       0       0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python