Python 根据其他列值向dataframe添加新列

Python 根据其他列值向dataframe添加新列,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框,它有两列:DNI,Email 我还有另外一个:名字,姓氏,num 这是数据结构: 数据帧1: DNI email . 1 Name1.lastname1@domain.com . 525 Name2.lastname2@domain.com . 665 Name3.lastname3@domain.com 数据帧2: first name last name num . name2 lastname2 8658685 . name1

我有一个数据框,它有两列:DNI,Email

我还有另外一个:名字,姓氏,num

这是数据结构:

数据帧1:

  DNI   email
. 1     Name1.lastname1@domain.com
. 525   Name2.lastname2@domain.com
. 665   Name3.lastname3@domain.com
数据帧2:

  first name  last name  num
. name2       lastname2  8658685
. name1       lastname1  1131222
我想根据邮件将num列添加到第一个数据帧,如果电子邮件列不存在姓名和姓氏组合,我想添加“0”值,如下所示:

  DNI   email                        num
. 1     Name1.lastname1@domain.com  1131222
. 525   Name2.lastname2@domain.com  8658685
. 665   Name3.lastname3@domain.com  0
我不确定做这件事的正确方法是什么。。。我正在考虑使用for循环来实现这一点,根据一些条件向字典中添加值,但是这种逻辑对于大型数据帧来说效率很低

有没有更好的办法


谢谢

从df1中提取姓名并添加为列


在姓名和姓氏上将df1与df2合并

您可以按照以下步骤操作:

  • 通过连接名字、姓氏和“domain.com”,在dataframe2中创建一个新列“email”

    dataframe2[“email”]=dataframe2[“first_name”]+“+dataframe2[“last_name”]+“@domain.com”

  • 进行任何其他所需的字符串更改(根据您的数据),以使此电子邮件格式与dataframe1中的电子邮件完全匹配

  • 现在,通过左键连接dataframe1和dataframe2

    result=dataframe1.merge(dataframe2,on='email',how='left')

  • 最后从“num”列中删除NaN,并将其替换为0

    result['num']=result['num'].fillna(0)


  • 您可以编辑查询或
    结果
    数据框以删除生成的额外列。

    @RichieV该帖子非常有用!谢谢