Python 比较两个数据帧并根据结果更新一个
我有以下(简化)数据 我需要比较两个数据帧中的'id'和'sku'列,对于那些匹配的,我需要更新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'])
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:只能比较具有相同标签的系列对象”,那么,如何处理具有不同形状的数据帧呢?