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

2024-05-18 20:36:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,它有两列: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循环来实现这一点,根据一些条件向字典中添加值,但是这种逻辑对于大型数据帧来说效率很低

有没有更好的办法

谢谢


Tags: 数据namecomemaildomainnum姓氏name1
2条回答

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

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

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

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

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

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

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

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

您可以编辑查询或result数据帧以删除生成的额外列

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

在名称和名称上合并df1和df2;姓

相关问题 更多 >

    热门问题