无法在参数上指定连接到数据帧

2024-09-15 04:44:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要对索引上的两个数据帧进行内部连接

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(text,how='inner')工作正常。我不明白为什么


Tags: 数据textidson错误labelhowinner
1条回答
网友
1楼 · 发布于 2024-09-15 04:44:55

函数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]

相关问题 更多 >