需要帮助来构建特定的Dataframe(PYTHON PANDAS)

时间:2017-09-22 22:04:34

标签: python pandas dataframe

我最近问过如何合并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:这个社区很棒,我非常感谢它的反馈,这对我的个人项目非常有帮助。

奖励

1 个答案:

答案 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