Python Pandas-错误:只能比较标记相同的Series对象

时间:2018-10-31 17:29:10

标签: python pandas dataframe

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

编辑:

enter image description here

2 个答案:

答案 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']