首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为每个客户创建一个for循环,以查找每个活动的汇总权重?

如何为每个客户创建一个for循环,以查找每个活动的汇总权重?
EN

Stack Overflow用户
提问于 2022-10-23 14:31:39
回答 1查看 26关注 0票数 0

下面有一个DataFrame 'Table1‘,它缺少称重栏:

Table1

我有客户通过不同的渠道电子访问我的业务,每个客户都归因于一个渠道,根据每个频道的访问次数。因此,每个渠道都会得到每个客户的加权分数(参见权重栏)。我想要创建遍历表中每一行的for循环。每项活动的加权得分是每个客户重复的,这样到最后,所有加权加权分数的总和将等于不同的客户数量(5)。

一旦我得到了这个表(将丢失的‘权重’列添加到我的当前表中),我想创建一个新的DataFrame (参见Table2),它显示每个不同通道的百分比权重。要创建这个表,我需要在“表1”中找到每个通道所有加权分数的总和.这应该是(5)的总和。然后,我将每个频道的加权分数之和除以不同客户的总数(5),得到加权百分比。

本质上,我需要帮助构建一个脚本来向我的Table1中添加一个权重列,然后构建一个创建Table2的脚本。

我仍然在学习熊猫,所以任何帮助都将不胜感激。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-10-23 22:26:42

考虑到缺少一个可重复的例子,我假设您有一个名为df的熊猫数据中心。

为了执行所需的操作,您应该使用groupby

首先通过Customer ID使用一个组来创建表1:

代码语言:javascript
复制
table1 = df.assign(Weightage = lambda df_: 
    df_['Visits']/df_.groupby('Customer ID')['Visits'].transform(sum))

然后,您按Channel分组

代码语言:javascript
复制
table2 = table1 \
    .groupby('Channel', as_index=False, sort=False)[['Weightage']].sum() \
    .assign(Percentage = lambda df_: df_['Weightage']/df_['Weightage'].sum()) \
    .assign(Percentage = lambda df_: df_['Percentage'].apply('{:.0%}'.format))

最后一个应用程序只是根据Table2以字符串格式(带有%)返回结果。如果您希望它是一个数字,只需删除它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74171964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档