【问题标题】:Need help to build a specific Dataframe (PYTHON PANDAS)需要帮助来构建特定的数据框 (PYTHON PANDAS)
【发布时间】:2023-03-08 00:02:01
【问题描述】:

我最近询问了如何合并 Dataframes,除了我之前询问的内容之外,我还需要这个问题。 (上一个问题:Python pandas, build a dataframe from 2 dataframes with these properties

我需要解决这个问题。

我需要从两个数据帧构建一个完整的数据帧,但如果需要,只包含来自第二个数据帧的某些信息。

示例:

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:这个社区很棒,我非常感谢它的反馈,它对我的​​个人项目很有帮助。

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以进行左侧合并,然后使用转换重新创建数量列,然后删除重复项

    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
    

    【讨论】:

    • 再次感谢 Vaishali 回答我的疑问。如果你在布宜诺斯艾利斯,我完全雇用你哈哈。干杯
    • 堆栈溢出感谢自己努力的方式是通过投票和接受答案:)
    猜你喜欢
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2014-02-14
    • 2018-12-28
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多