python两列数据连接_python – 使用两列之间的映射在pandas数据帧中创建链

这是一个测试数据帧.我想使用EmpID和MgrID之间的关系来进一步映射新列中的MgrID管理器.

Test_df = pd.DataFrame({'EmpID':['1','2','3','4','5','6','7','8','9','10'],

'MgrID':['4','4','4','6','8','8','10','10','10','12']})

Test_df

如果我为初始关系创建一个字典,我将能够创建链的第一个链接,但我担心我需要遍历每个新列以创建一个新列.

ID_Dict = {'1':'4',

'2':'4',

'3':'4',

'4':'6',

'5':'8',

'6':'8',

'7':'10',

'8':'10',

'9':'10',

'10':'12'}

Test_df['MgrID_L2'] = Test_df['MgrID'].map(ID_Dict)

Test_df

最有效的方法是什么?

谢谢!

最佳答案 这是一个简单的while循环方式.注意我将MgrID的名称更改为MgrID_1

Test_df = pd.DataFrame({'EmpID':['1','2','3','4','5','6','7','8','9','10'],

'MgrID_1':['4','4','4','6','8','8','10','10','10','12']})

d = Test_df.set_index('EmpID').MgrID_1.to_dict()

s = 2

while s:

Test_df['MgrID_'+str(s)] = Test_df['MgrID_'+str(s-1)].map(d)

if Test_df['MgrID_'+str(s)].isnull().all():

Test_df = Test_df.drop(columns='MgrID_'+str(s))

s = 0

else:

s+=1

Ouptut:Test_df

EmpID MgrID_1 MgrID_2 MgrID_3 MgrID_4 MgrID_5

0 1 4 6 8 10 12

1 2 4 6 8 10 12

2 3 4 6 8 10 12

3 4 6 8 10 12 NaN

4 5 8 10 12 NaN NaN

5 6 8 10 12 NaN NaN

6 7 10 12 NaN NaN NaN

7 8 10 12 NaN NaN NaN

8 9 10 12 NaN NaN NaN

9 10 12 NaN NaN NaN NaN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值