下面是一个示例代码,演示如何按照域名将不同的电子邮件地址分开到不同的列中。
import pandas as pd
# 创建一个包含电子邮件地址的数据框
data = {'email': ['user1@example.com', 'user2@example.com', 'user3@gmail.com', 'user4@gmail.com']}
df = pd.DataFrame(data)
# 创建一个新的列用于存储域名
df['domain'] = df['email'].str.split('@').str[1]
# 创建一个字典来存储每个域名对应的列
domain_columns = {}
# 遍历数据框中的每个域名
for domain in df['domain'].unique():
# 创建一个新的列名,形式为 "domain_域名"
column_name = f"domain_{domain}"
# 将新的列名和对应的域名存储到字典中
domain_columns[domain] = column_name
# 创建一个新的列,并将该列的值设置为 True 或 False,表示该行的电子邮件地址是否属于该域名
df[column_name] = df['domain'] == domain
# 删除原始的域名列
df = df.drop(columns=['domain'])
print(df)
输出结果如下:
email domain_example.com domain_gmail.com
0 user1@example.com True False
1 user2@example.com True False
2 user3@gmail.com False True
3 user4@gmail.com False True
在这个示例中,我们首先创建一个包含电子邮件地址的数据框。然后,我们使用 str.split('@').str[1]
将每个电子邮件地址拆分为用户名和域名,并将域名存储到一个新的列中。
接下来,我们遍历数据框中的每个唯一域名,并为每个域名创建一个新的列。新列的列名由域名组成,形式为 "domain_域名"。我们还将域名和对应的列名存储到一个字典中。
最后,我们将原始的域名列删除,以得到最终的结果。在结果中,每个域名对应的列都包含布尔值,表示该行的电子邮件地址是否属于该域名。