目标:使用结构
输入相应电子邮件地址的名称列表和输出列表str(first_name) + '.' + str(last_name) + '@gmail.com'
以下函数创建一个随机生成的名称列表...
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
现在我有了这些名字,我会将它们放入一个包含其他数据集的数据框中,我将在这里省略...
masterDF = pd.DataFrame(columns=['author', 'email')
masterDf.author = fill_names(n = n)
从这里我有点不确定。我应该使用.split()方法拆分for循环中的名/姓吗?像(这是更多的伪代码)......
for row in masterDF.author():
a = masterDF.author.split(' ')
email = a[0] + '.' + a[1] + '@gmail.com'
return email
有更好的方法吗?
答案 0 :(得分:3)
您可以使用str.replace
:
masterDF['email'] = masterDF.author.str.replace('\s+', '.') + '@gmail.com'
样品:
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
还可以使用str.split
和split
使用join
解决方案:
a = masterDF.author.str.split()
masterDF['email'] = masterDF.str[0] + '.' + masterDF.str[1] + '@gmail.com'