繁体   English   中英

如何创建一个 lambda function 以根据条件和列表中的存在对 dataframe 值求和

[英]How to create a lambda function to sum dataframe values based on criteria and presence in a list

我有一个 dataframe 包含每日员工名单,另一个包含一系列销售。

daily_employee_df:

| EE_ID| Date      |
| -----| ----------|
|   101| 20220904  |
|   102| 20220904  |
|   106| 20220904  |
|   102| 20220905  |
|   103| 20220905  |
|   104| 20220905  |

all_sales_df:

| Sale_ID | Date    | Sale_Amt| EEs_Present    |
| ------- | --------|---------|----------------|
|     0001| 20220904|   100.04| [101, 102, 106]|
|     0002| 20220905|   998.06| [102, 103, 104]|

什么是对每个员工每天在场的 Sale_Amt 值求和并将该总和添加到daily_employee_df的有效方法? 我每天要处理数以千计的销售。

我能够使用以下方法获得每个员工和一天的销售额:

daily_employee_df['EE_Sales']  = daily_employee_df.apply(lambda x: len(all_sales_df[(all_sales_df['Date'] == x['Date']) & ([str(x['EE_ID']) in c for c in list(all_sales_df['EEs_Present'])])]), axis = 1)

但我无法以类似的方式对销售总额求和。 我尝试用 sum 包装它,但语法似乎不起作用。

谢谢你的帮助!

非常接近 - 您可以使用 sum() 并在末尾添加您要求和的列['Sale_Amt']

销售计数(已在问题中完成):

daily_employee_df['EE_Sales_Count']  = daily_employee_df.apply(lambda x: len(all_sales_df[(all_sales_df['Date'] == x['Date']) & ([str(x['EE_ID']) in c for c in list(all_sales_df['EEs_Present'])])]), axis = 1)

销售额:

daily_employee_df['EE_Sales_Sum']  = daily_employee_df.apply(lambda x: sum(all_sales_df[(all_sales_df['Date'] == x['Date']) & ([str(x['EE_ID']) in c for c in list(all_sales_df['EEs_Present'])])]['Sale_Amt']), axis = 1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM