【发布时间】:2020-05-11 22:47:24
【问题描述】:
我有一个 df,它是两个结构相同的 df 的 concat,第一个是 Orders,第二个是 Cancels。
Orders 中有超过 20,000 行,少数 Cancels 有对应的 OrderNo 和 ItemCode。我已将取消的数量设为负数,因此在将 df 按OrderNo 和ItemCode 分组时,我可以将数量字段与agg 相加,从而为我提供实际的发货数量,以补偿取消的订单。
下面是我的数据框:
OrderNo OrderDate LineNo ClientNo ItemCode QtyOrdered QtyShipped
0 528758 1/3/2017 1 1358538 111931 70 70
1 528791 1/3/2017 10 1254798 110441 300 300
2 528791 1/3/2017 1 1254798 1029071 10 10
3 528791 1/3/2017 2 1254798 1033341 10 10
4 528791 1/3/2017 8 1254798 1040726 15 15
... ... ... ... ... ... ... ...
28344 537667 2/6/2017 12 43823870 10137992 0 -2
28345 537771 2/7/2017 5 1276705 1041106 0 -4
28346 539524 2/13/2017 6 1254798 1038323 0 -10
28347 542362 2/23/2017 11 1254612 1041108 0 -2
28348 542835 2/23/2017 13 1255235 10137993 0 -5
28349 rows × 7 columns
运行后:
ActualOrders = PreActualOrders.groupby(['OrderNo','ItemCode']).agg({'QtyOrdered': 'sum', 'QtyShipped': 'sum'}).reset_index()
我得到了我想要的结果,但我丢失了 DF 中的所有其他列。
结果示例如下:
OrderNo ItemCode QtyOrdered QtyShipped
28255 543734 1038324 1 1
28256 543734 10137992 1 1
28257 543734 10137993 1 1
28258 543735 1041106 1 1
28259 543735 1041108 1 1
28260 543735 10135359 1 1
我需要添加什么才能将所有列保留在原始 df 中?
那些其他列中的所有值都匹配,因为它们是相应的取消或订单。
谢谢,
MTH
【问题讨论】: