我试图在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"
显然这不起作用。你能告诉我如何通过迭代为特定单元格赋值吗?当然,如果有更有效和“聪明”的方法来做到这一点?
由于
答案 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