好的,这在代码的许多部分比一个特定的问题更具问题。我没有做到这一点。
假设我有2个数据帧:
**DF1 = Orders**
Ordes N Customer Product Color Date of delivery Qty Amount
A12 John INJ12 Blue 10/10/2018 5 100,00
A12 John INJ13 Green 10/10/2018 10 200,00
A13 Francis COB01 Brown 01/08/2018 2 50,00
A14 Mike ACE05 Blue 08/08/2018 20 80,00
**DF2 = Inventory**
Orders Product Color Qty
A12 INJ13 Green 5
A12 INJ13 Green 3
A12 INJ12 Gray 5
A14 ACE05 Blue 20
我想做的是通过订单获得库存的马赫订单并得到类似的内容:
Ordes N Customer Date of delivery Product Color Inv Qty OrderQty
A12 john 10/10/2018 INJ13 Green 8 10
INJ12 Blue 0 5
INJ12 Gray 5 0
A13 Francis 01/08/2018 COB01 Brown 0 2
A14 Mike 08/08/2018 ACE05 Blue 20 20
我在做的是: 第1步
DF2[reference] = DF2[Order N] + DF2[Product] + DF2[Color]
**DF2.GROUPBY([reference,Order N,Product,Color])[Qty].sum()**
第二行代码给了我重复的值。我不知道为什么。
第2步
DF1[reference] = DF2[Order N] + DF2[Product] + DF2[Color]
**DF2.GROUPBY([reference,Order N,Product,Color])[Qty].sum()**
第3步
df1_2 = pd.merge(left = DF1,right = DF2,right_on='reference',left_on
='reference')
现在我得到了许多我不能继续的奇怪价值观。
任何人都可以帮助我吗?
答案 0 :(得分:1)
您首先应groupby
df2 sum
数量
df2.groupby(['Orders','Product','Color']).Qty.sum()
s=pd.concat([df1.set_index(['OrdesN','Product','Color']),df2],1)
s[['Customer','Dateofdelivery']]=s[['Customer','Dateofdelivery']].ffill()
s=s.fillna(0)
s
Out[145]:
Customer Dateofdelivery Qty Amount Qty
A12 INJ12 Blue John 10/10/2018 5.0 100,00 0.0
Gray John 10/10/2018 0.0 0 5.0
INJ13 Green John 10/10/2018 10.0 200,00 8.0
A13 COB01 Brown Francis 01/08/2018 2.0 50,00 0.0
A14 ACE05 Blue Mike 08/08/2018 20.0 80,00 20.0