下面有一个DataFrame 'Table1‘,它缺少称重栏:
我有客户通过不同的渠道电子访问我的业务,每个客户都归因于一个渠道,根据每个频道的访问次数。因此,每个渠道都会得到每个客户的加权分数(参见权重栏)。我想要创建遍历表中每一行的for循环。每项活动的加权得分是每个客户重复的,这样到最后,所有加权加权分数的总和将等于不同的客户数量(5)。
一旦我得到了这个表(将丢失的‘权重’列添加到我的当前表中),我想创建一个新的DataFrame (参见Table2),它显示每个不同通道的百分比权重。要创建这个表,我需要在“表1”中找到每个通道所有加权分数的总和.这应该是(5)的总和。然后,我将每个频道的加权分数之和除以不同客户的总数(5),得到加权百分比。
本质上,我需要帮助构建一个脚本来向我的Table1中添加一个权重列,然后构建一个创建Table2的脚本。
我仍然在学习熊猫,所以任何帮助都将不胜感激。谢谢!
发布于 2022-10-23 22:26:42
考虑到缺少一个可重复的例子,我假设您有一个名为df的熊猫数据中心。
为了执行所需的操作,您应该使用groupby。
首先通过Customer ID使用一个组来创建表1:
table1 = df.assign(Weightage = lambda df_:
df_['Visits']/df_.groupby('Customer ID')['Visits'].transform(sum))然后,您按Channel分组
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以字符串格式(带有%)返回结果。如果您希望它是一个数字,只需删除它。
https://stackoverflow.com/questions/74171964
复制相似问题