我最近问过如何合并Dataframes,问题是我需要这个问题加入我以前的问题。 (上一个问题:Python pandas, build a dataframe from 2 dataframes with these properties)
我需要解决这个问题。
我需要从两个数据帧构建一个完整的数据帧,但如果需要,只包含第二个Dataframe的某些信息。
实施例
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模块所涉及的问题。
PD:这个社区很棒,我非常感谢它的反馈,这对我的个人项目非常有帮助。奖励
答案 0 :(得分:0)
您可以执行左合并,然后使用transform重新创建数量列,然后删除重复项
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