Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据条件指定值_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 根据条件指定值

Python 根据条件指定值,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个数据库,用于跟踪建筑公司的服务和安装收入。我试图跟踪技术人员的营业额,其中技术人员为销售人员创造了领先优势,并跟踪销售收入。在本例中,从数据库中提取,Justin是创建lead的技术人员;肖恩就是那个去拜访电话的推销员,在这种情况下,他把电话卖掉了;最后,Victor是安装该作业的人。所有销售人员的总数都为0,因为公司在安装完成之前不会收集。如果project\u id==0,则表示没有从原始调用创建潜在客户。项目编号可以跨越至少2行,最多3行 例如: project_

我有一个数据库,用于跟踪建筑公司的服务和安装收入。我试图跟踪技术人员的营业额,其中技术人员为销售人员创造了领先优势,并跟踪销售收入。在本例中,从数据库中提取,Justin是创建lead的技术人员;肖恩就是那个去拜访电话的推销员,在这种情况下,他把电话卖掉了;最后,Victor是安装该作业的人。所有销售人员的总数都为0,因为公司在安装完成之前不会收集。如果
project\u 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
...         ...          ...            ...         ...        ...          ...
我想表扬贾斯汀,因为他打了一个电话,卖出了172万美元,我想表扬肖恩,因为他卖掉了这份工作。我更愿意创建一个新的列,名为
sales\u 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.groupby
pd.sort_值
,以及
pd.iloc
;但是没有成功。我不太明白如何为所需的行分配适当的值。如果有人知道解决方案或能为我指出正确的方向,我们将不胜感激。

如果您有此数据帧(假设记录已排序=安装作业是最后一个):

然后:

创建
sales\u total
列:

索引项目\u id emp\u名称客户\u名称发票\u日期总销售额\u总数
0 15315 26173042贾斯汀比尔W 2021-03-26 169.95 17235.0
1 15322 26173042肖恩比尔W 2021-03-27 0.00 17235.0
2 15347 26173042维克多比尔W 2021-04-01 17235.00 17235.0
3 15348 0贾斯汀简德2021-04-01 285.00 285.0

对于单个项目id,您想将总计的总和分配给所有行吗?@AmitVikramSingh我想对具有相同项目id的行应用总计的最大值。除了当
项目id==0
时,因为有很多行的项目id为0。
   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)