在Python中映射数据帧

时间:2018-05-17 14:20:53

标签: python pandas

我试图在python中将一个数据框映射到另一个数据框。这两个表是:

name    age   grade   code
Willard 20     88     2877
 Al     19     92     3000
Omar    22     95     3710
Spencer 21     70     4001
Abin    18     76     2338

和:

sec.Code  sec.number 
2877       10003
1244       13772    
3000       98822
2338       11223    
4553       22996    

第一个表的“code”列和第二个表的“sec.Code”引用相同的东西,因此我想将“code”映射到“sec.number”,如果代码确实在第二个表中不存在,以填充相关消息。

简单来说,我想创建一个完全像这样的决赛桌:

name    age  grade  code  sec.number
Willard 20    88    2877  10003
Al      19    92    3000  98822
Omar    22    95    3710  Not match
Spencer 21    70    4001  Not match
Abin    18    76    2338  11223

我对python没有多少经验,这就是我尝试过的:

for i in First_table['code']:
   for j in Second_table['sec.Code']:
    if i == j:
        First_table['sec_number'] = Second_table['sec.Code']
    else:
        First_table['sec_number'] = "Not match"

显然这不起作用。你能告诉我如何通过迭代为特定单元格赋值吗?当然,如果有更有效和“聪明”的方法来做到这一点?

由于

1 个答案:

答案 0 :(得分:0)

选项1
const myName = { name: 'John' }; class Salutation { constructor() { this.name = 'Mike'; this.tmpContext = this; } getGreeting() { const func = function() { return `Hi. My name is ${this.name}`; }.bind(this.tmpContext); return func(); } } const salutation = new Salutation(); salutation.tmpContext = myName; console.log(salutation.getGreeting()); salutation.tmpContext = salutation; console.log(salutation.getGreeting()); 左侧 merge ,就在 code

sec.Code

选项2
df1.merge(df2, left_on='code', right_on='sec.Code', how='left').drop(['sec.Code'], axis=1).fillna('Not match') name age grade code sec.number 0 Willard 20 88 2877 10003 1 Al 19 92 3000 98822 2 Omar 22 95 3710 Not match 3 Spencer 21 70 4001 Not match 4 Abin 18 76 2338 11223 set_index

join