加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何连接两个数据帧并在这样的特定列上对齐?

发布时间:2020-12-20 11:56:43 所属栏目:Python 来源:网络整理
导读:我想通过加入两个数据框并在特定列上对齐来做一些工作,如下所示: 数据框左边像: dict1={'abstract': {0: 'A1',1: 'A2',2: 'A3',3: 'B1',4: 'B2',5: 'B3',6: 'B4',7: 'C1',8: 'C2'},'name': {0: 'A',1: 'A',2: 'A',3: 'B',4: 'B',5: 'B',6: 'B',7: 'C',8: '
我想通过加入两个数据框并在特定列上对齐来做一些工作,如下所示:

数据框左边像:

dict1={'abstract': {0: 'A1',1: 'A2',2: 'A3',3: 'B1',4: 'B2',5: 'B3',6: 'B4',7: 'C1',8: 'C2'},'name': {0: 'A',1: 'A',2: 'A',3: 'B',4: 'B',5: 'B',6: 'B',7: 'C',8: 'C'}}

left=pd.DataFrame(dict1)

数据框如下:

dict2={'abstract': {0: 'A1',2: 'B1',3: 'B2',4: 'B3',5: 'C1',6: 'C2',7: 'C3'},2: 'B',5: 'C',6: 'C',7: 'C'}}

right=pd.DataFrame(dict2)

我希望得到一个这样的组合数据帧:

dict3={'name': {0: 'A',8: 'C',9: 'C'},'abstract_right': {0: 'A1',2: nan,6: nan,8: 'C2',9: 'C3'},'abstract_left': {0: 'A1',9: nan}}

combined=pd.DataFrame(dict3)

如何用熊猫做到这一点?

解决方法

你需要的不仅仅是一个连接,而是一个连接,因为它们必须与名称匹配.您可以创建一个id列来帮助您合并和对齐行:

left['id'] = left.groupby('name').cumcount()
right['id'] = right.groupby('name').cumcount()
left.merge(right,on=['id','name'],how='outer',suffixes=['_left','_right']).drop('id',axis=1)

enter image description here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读