我需要在索引上建立两个数据框的内部联接

objectId label
46943   1
96057   1
98476   1
121042  1
124587  1

objectId    preprocessed
3873375     [завоева, ве, мир, род, помидорчик, черр, наш,...
10805823    [российск, академ, наук, ран, призна, слов, со...
19557054    []
19750631    [зарегистрирова, куйбышев, прошедш, недел, пре...
24316030    [салат, русск, красавиц, ингредиент, курин, гр...


当我尝试打电话时

ids.join(texts, how = 'inner', on = 'objectId')


我收到一个错误:

 KeyError: 'objectId'


但是ids.join(texts,how ='inner')工作正常。不明白为什么。

最佳答案

函数join默认情况下按索引合并,因此,如果objectId不是列而是索引,则它会正确合并。



如果使用:

ids.join(texts, how = 'inner', on = 'objectId')


这意味着将连接索引连接到列objectId,如果不存在,则获取keyerror

ids = pd.DataFrame({
         'objectId':[1,3,5,7,10,0],
         'label':[5,3,6,9,2,4],

})

texts = pd.DataFrame({
         'objectId':[10,3,5],
         'preprocessed':[['d','ff'],['gg','dd'],['qq']],

})

print (texts)

#index from objectId column
texts = texts.set_index('objectId')
#join column ids.objectId to index texts.index
df = ids.join(texts, how = 'inner', on = 'objectId')
print (df)
   objectId  label preprocessed
1         3      3     [gg, dd]
2         5      6         [qq]
4        10      2      [d, ff]

关于python - 无法加入参数中指定的 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54842666/

10-15 07:56