如何对首列存在重复的两个DataFrame做减法并保留业务标识列
解决方案
- 聚合下单数据时将
business_symbol加入分组维度,由于同一order_id对应的业务标识唯一,聚合后可完整保留该字段:
df_add_orders_group = df_add_orders.groupby(['order_id', 'business_symbol'], as_index=False)['open_orders'].sum()
- 按原有逻辑聚合取消订单数据:
df_cancel_orders_group = df_cancel_orders.groupby(['order_id'], as_index=False)['cancel_orders'].sum()
- 以订单ID为关联键左连两个聚合结果,处理无取消记录的订单空值后计算剩余有效订单量:
# 关联两个表 df_total_orders = df_add_orders_group.merge(df_cancel_orders_group, on='order_id', how='left') # 无取消记录的订单取消量填0 df_total_orders['cancel_orders'] = df_total_orders['cancel_orders'].fillna(0) # 计算剩余订单量,可根据业务需要添加clip(lower=0)避免出现负数 df_total_orders['open_orders'] = df_total_orders['open_orders'] - df_total_orders['cancel_orders'] # 删除多余的取消量字段 df_total_orders = df_total_orders.drop(columns=['cancel_orders'])
内容的提问来源于stack exchange,提问作者Hold The Door
相关产品推荐
相关产品推荐

