Python 熊猫:在具有不同索引的数据帧上进行一对多连接
我有一个数据框架和一个带有管理/操作指定的参考表,我想加入“MNGR”,我相信这是一种一对多关系。我不需要DF2中的任何其他列,但显然需要引用“MNGR”作为连接的索引 编辑:请注意,我已经通过了,还没有找到一个适用于这里的答案Python 熊猫:在具有不同索引的数据帧上进行一对多连接,python,pandas,Python,Pandas,我有一个数据框架和一个带有管理/操作指定的参考表,我想加入“MNGR”,我相信这是一种一对多关系。我不需要DF2中的任何其他列,但显然需要引用“MNGR”作为连接的索引 编辑:请注意,我已经通过了,还没有找到一个适用于这里的答案 DF1 = EMPLID MNGR YEAR V1 V2 V3 V4 12 BOB 2012 x y z a 13 JIM
DF1 = EMPLID MNGR YEAR V1 V2 V3 V4
12 BOB 2012 x y z a
13 JIM 2013 x y z a
14 RHONDA 2012 x y z a
15 RHONDA 2012 x y z a
16 JIM 2012 x y z a
17 RHONDA 2012 x y z a
DF2 = MNGR ADMIN/OP YEAR TRACT
BOB ADMINISTRATIVE 2000 A
JIM OPERATIONS 2013 B
RHONDA ADMINISTRATIVE 2012 A
几年前,我在SQL中通过一对多连接执行了此操作,但我似乎无法理解此功能如何转换为python:
DF1.join(DF2.set_index('MNGR'), on='MNGR')
这会通过,但会产生DF2连接的结果,并且ADMIN/OP全部为null
我的预期结果:
DF1 = EMPLID MNGR YEAR V1 V2 V3 V4 ADMIN/OP
12 BOB 2012 x y z a ADMINISTRATIVE
13 JIM 2013 x y z a OPERATIONS
14 RHONDA 2012 x y z a ADMINISTRATIVE
15 RHONDA 2012 x y z a ADMINISTRATIVE
16 JIM 2012 x y z a OPERATIONS
17 RHONDA 2012 x y z a ADMINISTRATIVE
- 这本质上是一个合并问题,在中有介绍,但是,数据帧可能需要在合并之前进行清理
- 清除列标题,然后合并数据帧
- 这可以通过或来实现
- 用于在索引上组合数据帧
将熊猫作为pd导入
#示例数据帧
DF1=pd.DataFrame({'EMPLID':[12,13,14,15,16,17],'MNGR':['BOB','JIM','RHONDA','RHONDA','JIM','RHONDA','YEAR':[2012,2013,2012,2012,2012,2012,2012,2012],'V1':[x','x','x','x','x','x','V2:[y','y','y','y','y','y','V3','z','z','z','z','z','V4':['a','a','a']
DF2=pd.DataFrame({'MNGR':['BOB','JIM','RHONDA'],'ADMIN/OP':['ADMINISTRATIVE','OPERATIONS','ADMINISTRATIVE'],'YEAR':[2000,2013,2012],'TRACT':['A','B','A'])
#验证列名中没有空格
DF1.columns=DF1.columns.str.strip()
DF2.columns=DF2.columns.str.strip()
#合并数据帧
df=DF1.merge(DF2[[“MNGR”,“ADMIN/OP”]],on='MNGR',how='left')
#显示(df)
EMPLID MNGR第1年第2版第3年第4版管理员/操作
2012年10月12日x y z a行政
13吉姆2013 x y z a运营
14朗达2012 x y z a行政
15朗达2012 x y z a行政区
16吉姆2012 x y z a运营
17朗达2012 x y z a行政区