Python 比较两个数据帧并根据结果更新一个

Python 比较两个数据帧并根据结果更新一个,python,pandas,Python,Pandas,我有以下(简化)数据 我需要比较两个数据帧中的'id'和'sku'列,对于那些匹配的,我需要更新df_a['quantity']使其等于'0' 那么,像if语句之类的东西 if (df_a['id'] == df_b['id']) and (df_a['sku'] == df_b['sku']): df_a['quantity']=0 这应该可以 df_a.loc[(df_b['id'] == df_a['id']) & (df_a['sku'] == df_b['sku'])

我有以下(简化)数据

我需要比较两个数据帧中的'id'和'sku'列,对于那些匹配的,我需要更新
df_a['quantity']
使其等于'0'

那么,像if语句之类的东西

if (df_a['id'] == df_b['id']) and (df_a['sku'] == df_b['sku']):
    df_a['quantity']=0
这应该可以

df_a.loc[(df_b['id'] == df_a['id']) & (df_a['sku'] == df_b['sku']), 'quantity '] = 0
这应该可以

df_a.loc[(df_b['id'] == df_a['id']) & (df_a['sku'] == df_b['sku']), 'quantity '] = 0

这不是最优雅的方式,但如果数据帧具有不同的形状,则可以实现这一点

a_id_sku = df_a.id + df_a.sku
b_id_sku = df_b.id + df_b.sku

df_a.loc[a_id_sku.isin(b_id_sku), 'quantity '] = 0

让我知道这是否有效

不是最优雅的方式,但是如果数据帧具有不同的形状,它会起作用

a_id_sku = df_a.id + df_a.sku
b_id_sku = df_b.id + df_b.sku

df_a.loc[a_id_sku.isin(b_id_sku), 'quantity '] = 0
让我知道这是否有效

另一种方法使用:

另一种方法是:


这样就可以了,但我的数据帧是不同的形状。它抛出:“ValueError:只能比较相同标记的系列对象”,那么,如何对具有不同形状的数据帧进行比较呢?除了我的数据帧是不同的形状之外,这可以做到。它抛出:“ValueError:只能比较具有相同标签的系列对象”,那么,如何处理具有不同形状的数据帧呢?