【问题标题】:How to update one dataframe based on the value of other dataframe?如何根据其他数据框的值更新一个数据框?
【发布时间】:2022-01-11 12:25:10
【问题描述】:

您好,我有 2 个数据框,我必须根据其他数据框更新值-

示例: df1:

Region   Sub_Region   Status    Reason
LATAM    CRM          Success 
LATAM    Genesys      Failed
ASPAC    CRM          Success
ASPAC    Genesys      Success

df2:

Region  Sub_Region  Max_Load_Date
LATAM   CRM         2021-08-15
LATAM   Genesys     2021-09-10
ASPAC   CRM         2021-10-11
ASPAC   Genesys     2021-10-15

在最终输出中:

Region   Sub_Region   Status   Reason   Max_Load_Date
LATAM    CRM          Success           2021-08-15
LATAM    Genesys      Failed
ASPAC    CRM          Success           2021-10-11
ASPAC    Genesys      Success           2021-10-15

只有那些 status = 'Success' 才会更新

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    你可以merge和mask:

    (df1.merge(df2, on=['Region', 'Sub_Region'])
        .assign(Max_Load_Date=lambda d: d['Max_Load_Date'].mask(d['Status']=='Failed', ''))
    )
    

    合并将确保将正确的数据映射到正确的行,以防两个数据帧未按完全相同的顺序排序或缺少行。

    输出:

      Region Sub_Region   Status Max_Load_Date
    0  LATAM        CRM  Success    2021-08-15
    1  LATAM    Genesys   Failed              
    2  ASPAC        CRM  Success    2021-10-11
    3  ASPAC    Genesys  Success    2021-10-15
    

    【讨论】:

    • 出现错误 - ValueError: 'Region' 既是索引级别又是列标签,这是不明确的。
    猜你喜欢
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多