问题描述
我是 Python 新手,需要帮助理解,将我通过 for 循环编写的解决方案转换为更有效的解决方案(lambda 或列表理解)。
我有两个数据框:
Client_mapping:(特定类别和排名的选项总和始终等于 1):
Client_Category | Client_Rank | Client_Option | M1 | M2 | M3 |
---|---|---|---|---|---|
零售 | 黄金 | 留下 | 0.3 | 0 | 0 |
零售 | 黄金 | 离开 | 0 | 0.3 | 0.4 |
零售 | 银色 | 离开 | 0.5 | 0.5 | 0 |
Client_detail(按类别和等级划分的客户 ID):
Client_Category | Client_Rank | Client_ID | Client_Category_Count |
---|---|---|---|
零售 | 黄金 | 1234 | 4 |
零售 | 黄金 | 2345 | 4 |
零售 | 黄金 | 3456 | 4 |
零售 | 黄金 | 4567 | 4 |
零售 | 银色 | 5678 | 3 |
零售 | 银色 | 6789 | 3 |
零售 | 银色 | 7890 | 3 |
基本上,我必须在两个数据框之间匹配客户类别和排名,并将月份和选项分配给每个客户。这必须通过使用 math floor 函数来完成,并将小数的任何剩余计数分配给上个月(每个类别和选项都是动态的)。
输出应如下所示: 将客户映射与客户详细信息结合起来,以确定客户是离开还是留下,如果是,则在哪一个月。以客户 ID 1234 为例,他被标记为留在 M1(4 名员工 * 0.3),其中客户 3456、4567 被标记为离开 M3(一个是从使用 floor 留下的剩余小数点,另一个来自 0.4*4)>
Client_Category | Client_Rank | Client_ID | Client_Option | 月 |
---|---|---|---|---|
零售 | 黄金 | 1234 | 留下 | M1 |
零售 | 黄金 | 2345 | 离开 | M2 |
零售 | 黄金 | 3456 | 离开 | M3 |
零售 | 黄金 | 4567 | 离开 | M3 |
零售 | 银色 | 5678 | 离开 | M1 |
零售 | 银色 | 6789 | 离开 | M2 |
零售 | 银色 | 7890 | 离开 | M2 |
我无法复制我的原始 for 循环代码,因为它最多运行两页:D。提前致谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)