从名字、姓氏创建电子邮件地址

Mer*_*oug 1 python string pandas

目标:使用该结构输入姓名列表并输出相应电子邮件地址列表

str(first_name) + '.' + str(last_name) + '@gmail.com'
Run Code Online (Sandbox Code Playgroud)

以下函数创建一个随机生成的名称列表...

import names

def fill_names(gender = 'female', n = n):
    counter = 0
    name_container = []
    while counter < n:
        name = names.get_full_name(gender = gender)
        name_container.append(name)
        counter += 1
    return name_container
Run Code Online (Sandbox Code Playgroud)

现在我有了名字,我会把它们和一堆其他的数据系列放在一个数据框中,我将在这里省略......

masterDF = pd.DataFrame(columns=['author', 'email')
masterDf.author = fill_names(n = n)
Run Code Online (Sandbox Code Playgroud)

从这里我有点不确定。我应该使用 .split() 方法在 for 循环中拆分名字/姓氏吗?像(这是更多的伪代码)......

for row in masterDF.author():
    a = masterDF.author.split(' ')
    email = a[0] + '.' + a[1] + '@gmail.com'
    return email
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

jez*_*ael 5

您可以使用str.replace

masterDF['email'] = masterDF.author.str.replace('\s+', '.') + '@gmail.com'
Run Code Online (Sandbox Code Playgroud)

样本:

masterDF = pd.DataFrame({'author':['name1 surname1','name2 surname2']})

masterDF['email'] = masterDF.author.str.replace('\s+', '.') + '@gmail.com'
print (masterDF)
           author                     email
0  name1 surname1  name1.surname1@gmail.com
1  name2 surname2  name2.surname2@gmail.com
Run Code Online (Sandbox Code Playgroud)

也可以使用然后使用split解决方案:str.splitjoin

a = masterDF.author.str.split()
masterDF['email'] = masterDF.str[0] + '.' + masterDF.str[1] + '@gmail.com'
Run Code Online (Sandbox Code Playgroud)

  • 这太好了,谢谢。我喜欢 str.replace 解决方案 (2认同)