[英]Need help to build a specific Dataframe (PYTHON PANDAS)
最近,我问到有关如何合并数据框的问题,除了我之前问过的问题之外,我还需要这个问题。 (先前的问题: Python熊猫,使用2个具有这些属性的数据框构建一个数据框 )
我需要解决这个问题。
我需要从两个数据框构建一个完整的数据框,但如果需要,仅包含来自第二个数据框的某些信息。
例:
DF1:
MATERIAL_N° Description DATE DUE
0 123123300 Lightbulb X 01/05/2018
1 220466 Lightbulb Y 04/04/2018
2 220000 Lightbulb Z 07/07/2018
3 1241241 Lightbulb A 02/01/2019
4 7775447 Lightbulb B 02/01/2019
DF2:
BG GROUP MATERIAL N° TRANSIT TIME QUANTITY
0 9001 123123300 45D 40
1 9002 220466 30D 50
2 9004 220000 30D 120
3 9003 44124 20D 110
4 9000 2512222 15D 170
5 9002 1241241 40D 10
6 9001 123123300 45D 60
预期结果DF3:
MATERIAL N° Description DATE DUE BG GROUP TRANSIT TIME INCOMING
0 123123300 Lightbulb X 01/05/2018 9001.0 45D 100
1 220466 Lightbulb Y 04/04/2018 9002.0 30D 50
2 220000 Lightbulb Z 07/07/2018 9004.0 30D 120
3 1241241 Lightbulb A 02/01/2019 9002.0 40D 10
4 7775447 Lightbulb B 02/01/2019 NaN NaN NaN
我期望得到的结果是这两个数据框合并后,根据DF2的产品传入负载的总和(请记住,我为每个物料编号添加数量)
我已经尝试通过DF或pandas外部的函数进行操作,但是我敢肯定Pandas模块涵盖了一种更简单的方法来处理此问题。
PD:这个社区很棒,我非常感谢它的反馈,它确实对我的个人项目有帮助。
荣誉
您可以进行左合并,然后使用转换重新创建数量列,然后删除重复项
df3 = df1.merge(df2, how = 'left')
df3['QUANTITY'] = df3.groupby('MATERIAL N°').QUANTITY.transform('sum')
df3.drop_duplicates(subset = 'MATERIAL N°', keep = 'last', inplace = True)
你得到
MATERIAL N° Description DATE DUE BG GROUP TRANSIT TIME QUANTITY
1 123123300 Lightbulb X 01/05/2018 9001.0 45D 100.0
2 220466 Lightbulb Y 04/04/2018 9002.0 30D 50.0
3 220000 Lightbulb Z 07/07/2018 9004.0 30D 120.0
4 1241241 Lightbulb A 02/01/2019 9002.0 40D 10.0
5 7775447 Lightbulb B 02/01/2019 NaN NaN NaN
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.