查找客户添加的品牌的百分比截止值

Find the percentage cutoff for brand added by a customer

我有一个 pandas 数据框,我想在其中找到添加到他的购物车中的最流行品牌客户的百分比截止值。(新列:品牌的百分比截止值)

customerID Date Brand Brand Count Percentage Cutoff for brand
1 1-1-2021 Tomy Hilfigure 3 75%
1 1-1-2021 Adidas 1 75%
2 2-1-2021 Club Room 2 66%
2 2-1-2021 Levis 1 66%
2 3-1-2021 Adidas 4 50%
2 3-1-2021 Polo 4 50%

对于客户 1,百分比截止值为 75%,因为他在购物车中添加了 3 件 Tomy Hilfigure 品牌商品和 1 件阿迪达斯品牌商品 (25%),因此客户 1 的百分比截止值为 75%日期为 1-1-2021。

对于客户 2,在日期 2-1-2021,百分比截止将为 66.67%,因为他添加了 2 件 Club room 品牌 (66.66%) 和 1 件 Levis 品牌 (33%)。

我正在使用 pandas 按功能分组,但无法找到“品牌的百分比截止值”。如果你能给我一个方向,那就太好了。谢谢。

如果cutoff计算逻辑不对请告诉我,我用的是max_brand_count / total_brand_count

# Grouping by customerID and Date to calculate max and total brand count
gdf = df.groupby(['customerID', 'Date']) \
    .agg(
        max_brand_count=('Brand Count', 'max'),
        total_brand_count=('Brand Count', 'sum')
    ) \
    .reset_index()

# Calculate Percentage Cutoff for brand by dividing max and total brand counts
gdf['Percentage Cutoff for brand'] = gdf['max_brand_count'] / gdf['total_brand_count']
# Formatting it to percentage
gdf['Percentage Cutoff for brand'] = ['{:,.2%}'.format(val) for val in gdf['Percentage Cutoff for brand']]

该组的输出:

如果你想把它全部放在一起,你可以把它合并到你原来的 df 中。

final_df = df.merge(gdf, how='left', on=['customerID', 'Date'])