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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 将Python数组传递给javascript?
- 如何有条件地将子字符串复制到pandas数据帧的新列?
- 将Python3传递给virtualenvwrapper会引发ImportError
- python – 为什么pylint每个类需要2个公共方法?
- Ubuntu16.04安装python3.6.5步骤详解
- python – 如何在每次创建页面时生成一定长度的随机URL?
- Django模板中的Grouped CheckboxSelectMultiple
- 在构建树时如何通过引用传递?
- Python真的无所不能,没有做不到的!OpenCV加Docker实时目标
- python – “无法连接’str’和’int’对象”错误