[英]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.