set df1["name"] = df2["name] if df1["id"] == df2["id].
两个数据帧的大小均不同。我正在尝试通过编写以下代码来实现此行为:
dtl['name'] = dtlLookUp[["name"]].loc[ dtlLookUp["id"] == (dtl["id"]) ]
但是,我遇到了错误:
ValueError: Can only compare identically-labeled Series objects
编辑:
答案 0 :(得分:3)
我的问题解决了。将其发布给可能遇到相同错误的其他任何人(当我搜索此错误,但没有一个已发布的解决方案对我有效时,因此我只是改变了解决问题的方向)。我将此问题视为左联接。
psb = pd.merge(dtl, dtlLookUp, how='left', on=['id'])
p.s。仅仅因为您无法理解而在每个问题上都打下反对票是不礼貌的。但是,我相信该解决方案将为许多人带来帮助!
答案 1 :(得分:1)
在条件检查之前将两个数据框上的id列转换为相同的dtype。我假设名为 id 的列应具有 dtype int 。
df1['id'] = df1.id.astype(int)
df2['id'] = df2.id.astype(int)
根据选择从其他数据框中输入值
selection = (df1.id == df2.id)
df1.loc[selection, 'name'] = df2.loc[selection, 'name']