微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

根据条件分配值

如何解决根据条件分配值

我有一个数据库,用于跟踪一家建筑公司的服务和安装收入。我正在尝试跟踪技术人员的流失情况,其中技术人员为销售人员和销售收入设定了线索。在此示例中,从数据库提取的 Justin 是创建潜在客户的技术人员;肖恩是接电话的推销员,在这种情况下,他把它卖掉了;最后,维克多是安装这项工作的人。所有销售人员的总数为 0,因为公司在安装完成之前不会收取费用。如果 project_id == 0 则意味着没有从原始呼叫中创建潜在客户。一个项目编号至少可以跨越 2 行,最多可以跨越 3 行。

示例:

         project_id    emp_name     client_name     ...    invoice_date    total
...         ...          ...            ...         ...        ...          ...
15315     26173042      Justin         Bill W       ...     2021-03-26     169.95
...         ...          ...            ...         ...        ...          ...
15322     26173042      Sean           Bill W       ...     2021-03-27       0
...         ...          ...            ...         ...        ...          ...
15347     26173042      Victor         Bill W       ...     2021-04-01     17235
15348        0          Justin         Jane D       ...     2021-04-01      285
...         ...          ...            ...         ...        ...          ...

我想感谢 Justin 发起的电话会议,促成了 1.72 万美元的销售,我想感谢 Sean 出售这份工作。我更愿意创建一个名为 sales_total 的新列来捕获销售数据。

所需的输出

         project_id    emp_name     client_name     ...    invoice_date    total    sales_total
...         ...          ...            ...         ...        ...          ...         ...
15315     26173042      Justin         Bill W       ...     2021-03-26     169.95      17235
...         ...          ...            ...         ...        ...          ...         ...
15322     26173042      Sean           Bill W       ...     2021-03-27       0         17235
...         ...          ...            ...         ...        ...          ...         ...
15347     26173042      Victor         Bill W       ...     2021-04-01     17235       17235
15348        0          Justin         Jane D       ...     2021-04-01      285          0
...         ...          ...            ...         ...        ...          ...         ... 

我曾尝试使用 pd.groupbypd.sort_valuespd.iloc;但没有成功。我不太清楚如何为所需的行分配适当的值。如果有人知道解决方案或可以为我指明正确的方向,我们将不胜感激。

解决方法

如果你有这个数据框(假设记录已排序=安装工作在最后):

   index  project_id emp_name client_name invoice_date     total
0  15315    26173042   Justin      Bill_W   2021-03-26    169.95
1  15322    26173042     Sean      Bill_W   2021-03-27      0.00
2  15347    26173042   Victor      Bill_W   2021-04-01  17235.00
3  15348           0   Justin      Jane_D   2021-04-01    285.00

那么:

df["sales_total"] = df.groupby("project_id")["total"].transform("last")
print(df)

创建 sales_total 列:

   index  project_id emp_name client_name invoice_date     total  sales_total
0  15315    26173042   Justin      Bill_W   2021-03-26    169.95      17235.0
1  15322    26173042     Sean      Bill_W   2021-03-27      0.00      17235.0
2  15347    26173042   Victor      Bill_W   2021-04-01  17235.00      17235.0
3  15348           0   Justin      Jane_D   2021-04-01    285.00        285.0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?