我需要在索引上建立两个数据框的内部联接
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/