我有两个带有语言数据的pandas数据帧,oset
包含完整数据,miscset
是完整数据的子集。我正在寻找一种方法来比较两个列与来自两个不同数据帧的字符串,并确定那些匹配的行。然后,我想将oset
的第三个列复制到miscset
,以查找匹配的列。例如:
oset = pd.DataFrame({'some_items' : ['book', 'cat', 'deer', 'egg'],
'root' : ['boks', 'kattuz', 'deuza', 'ajja']})
miscset = pd.DataFrame({'subset' : ['cat', 'egg']})
我希望匹配cat
和egg
,因为它们已共享,然后在root
中创建一个包含miscset
的新列kattuz
,当然,ajja
在适当的行上。
我从这开始:
for row in miscset['subset']:
if row.isin(oset['some_items']):
但是我已经遇到了问题,因为你不能将.isin
与字符串一起使用。
有没有人有任何建议我可以做什么或如何继续?
编辑:我或许应该在我的真实数据集中添加,我总体上有更多列我不希望传输,或者我希望保留,所以我只想添加使用miscset
中root
列中相应的行向oset
的第5列。
答案 0 :(得分:1)
选项1:合并
miscset = miscset.merge(oset, left_on='subset', right_on='some_items',
how='inner').drop(columns='some_items')
# subset root
#0 cat kattuz
#1 egg ajja
您可以根据您希望如何处理oset
答案 1 :(得分:1)
使用map
miscset.assign(root=miscset['subset'].map(oset.set_index('some_items')['root']))
subset root
0 cat kattuz
1 egg ajja