简体   繁体   English

大熊猫通过比较两个数据框创建一个新列

[英]pandas create a new column by comparing two dataframes

I have two dataframes, df1 and df2. 我有两个数据框df1和df2。

df1: df1:

ID     Label
1      a
2      b
5      c

df2: df2:

ID
1
2
3

I want to create a new column "label" in df2 by comparing the two dataframes. 我想通过比较两个数据帧在df2中创建一个新列“ label”。 If the ids match, label in df2 should equal to label in df1. 如果ID匹配,则df2中的标签应等于df1中的标签。 If the id does not occur in df1, I want 0. So the final df2 look like this: 如果id不在df1中出现,我希望为0。因此最终的df2如下所示:

ID     Label
1      a
2      b
3      0

Any help will be appreciated. 任何帮助将不胜感激。 Thanks! 谢谢!

You can use map and then replace NaN s with fillna : 您可以使用map ,然后用fillna替换NaN

df2['Label'] = df2['ID'].map(df1.set_index('ID')['Label']).fillna(0)
print (df2)
   ID Label
0   1     a
1   2     b
2   3     0

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM