繁体   English   中英

需要帮助来构建特定的数据框(PYTHON PANDAS)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM