代码之家  ›  专栏  ›  技术社区  ›  ApacheOne

更新列值以反映具有两个不同大小数据帧的其他列值

  •  0
  • ApacheOne  · 技术社区  · 4 年前

    我有以下两个数据帧。

    数据框1:

    unique_id amount
    1         NaN
    2         5
    

    数据框2:

    unique_id amount city     email 
    1         90     Kansas   True
    2        100     Miami    False
    3        NaN     Kent     True
    4        123     Newport  True
    

    我只想更新unique\u id为1或2或任何其他可能与unique\u id匹配的金额列。输出应为:

       unique_id amount city     email 
        1        NaN     Kansas   True
        2        5       Miami    False
        3        NaN     Kent     True
        4        123     Newport  True
    

    我尝试过合并和联系,但没有得到想要的结果。我只想知道当两个数据帧大小不同并且想要更新某些列值时,最好的方法是什么。非常感谢您的指导

    1 回复  |  直到 4 年前
        1
  •  0
  •   Quang Hoang    4 年前

    尝试 mask :

    df_2['amount'] = df_2['amount'].mask(df_2['unique_id'].isin(df_1['unique_id']), 
                                         df_2['unique_id'].map(df_1.set_index('unique_id')['amount'])
                                        )
    

    输出:

       unique_id  amount     city  email
    0          1     NaN   Kansas   True
    1          2     5.0    Miami  False
    2          3     NaN     Kent   True
    3          4   123.0  Newport   True