Python Pandas-在groupby中应用过滤器
我正在尝试在数据帧中执行group by函数。我需要做两次聚合,以查找总计数和基于一列筛选的计数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,则使用: 要提高性能,请先创建列,然后聚合总和: 对
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